PHP. Ist es möglich, array_column mit einem Array von Objekten zu verwenden
Ist es möglich, pass in array_column
ein array von Objekten?
Ich habe umgesetzt ArrayAccess-Schnittstelle, aber es hat keine Wirkung.
Sollte ich implementieren?
class Foo implements ArrayAccess {
public $Id, $Title;
public function offsetExists($offset)
{
return isset($this->{$offset});
}
public function offsetGet($offset)
{
return $this->{$offset};
}
public function offsetSet($offset, $value)
{
$this->{$offset} = $value;
}
public function offsetUnset($offset)
{
unset($this->{$offset});
}
}
$object = new \Foo();
$object->Id = 1;
$object->Title = 'Test';
$records = array(
$object,
array(
'Id' => 2,
'Title' => 'John'
)
);
var_dump(array_column($records, 'Title')); //array (size=1) 0 => string 'John' (length=4)
InformationsquelleAutor der Frage Eldar Rakhimberdin | 2014-04-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
PHP 5
array_column
funktioniert nicht mit einem array von Objekten. Verwendenarray_map
statt:PHP 7
array_column()
Sehen https://github.com/php/php-src/blob/PHP-7.0.0/UPGRADING#L629 -
Dank Bell für den Tipp!
InformationsquelleAutor der Antwort DanFromGermany
PHP 7
Ja, siehe http://php.net/manual/en/function.array-column.php
PHP 5 >= 5.5.0
In PHP 5
array_column
funktioniert nicht mit einem array von Objekten. Sie können versuchen mit:PS: für die Klarheit, die ich lieber nicht verwenden
array_column
und verwenden array_map mit einer anonymen Funktionoder eine einfache
foreach
InformationsquelleAutor der Antwort cgaldiolo
Mögliche Lösung ist bereiten Sie, dass Arrays von Objekten:
InformationsquelleAutor der Antwort Igor Okto
Für zukünftige Besucher.
Dank.
InformationsquelleAutor der Antwort Nikunj Dhimar
Wenn Sie nicht wollen, zu ändern, jedes Stück code, den Sie schrieb bereits, weil Sie Ihre prod-server auf php5 und nicht php7
Hier ist eine portable Funktion
Dann können Sie es verwenden, wie Sie verwenden array_column in php7
Ist es nicht die beste Leistung, weil der array_fill aber es funktioniert.
Hinweis: könnte man überschreiben, php-native array_column mit dieser Funktion, so dass Sie nicht haben, etwas zu ändern, beim Wechsel php7/php5
InformationsquelleAutor der Antwort Tofandel