(PHP 5 >= 5.5.0, PHP 7, PHP 8)
array_column — Liefert die Werte einer einzelnen Spalte eines Arrays
array_column() gibt die Werte einer einzelnen Spalte von
array
zurück, die durch
column_key
angegeben wird. Optional kann ein
index_key
angegeben werden, um die Werte im
zurückgegebenen Array durch die Werte der Spalte
index_key
des angegebenen Arrays zu indizieren.
array
Ein mehrdimensionales Array oder ein Array von Objekten, aus dem eine Spalte von Werten abgerufen werden soll. Wenn ein Array von Objekten angegeben wird, können die öffentlichen Eigenschaften direkt abgerufen werden. Damit geschützte oder private Eigenschaften abgerufen werden können, muss die Klasse die magischen Methoden __get() und __isset() implementieren.
column_key
Die Spalte der zurückzugebenden Werte. Dieser Wert kann ein
Integer-Schlüssel der Spalte sein, die abgerufen werden soll, oder der
Name eines Zeichenketten-Schlüssels eines assoziativen Arrays oder
einer Eigenschaft. Er kann auch null
sein, um komplette Arrays oder
Objekte zurückzugeben (dies ist in Verbindung mit
index_key
nützlich, um das Array neu zu
indizieren).
index_key
Die Spalte, die als Index/Schlüssel für das zurückgegebene Array verwendet werden soll. Dieser Wert kann der Integer-Schlüssel der Spalte sein oder der Name des Zeichenketten-Schlüssels. Der Wert wird konvertiert wie für Array-Schlüssel üblich (vor PHP 8.0.0 waren jedoch auch Objekte erlaubt, die die Konvertierung in eine Zeichenkette unterstützen).
Gibt ein Array von Werten zurück, das eine einzelne Spalte aus dem angegebenen Array enthält.
Version | Beschreibung |
---|---|
8.0.0 |
Die Objekte der Spalten, die durch den Parameter
index_key angegeben werden, werden nicht mehr
in Zeichenketten umgewandelt, sondern lösen stattdessen einen
TypeError aus.
|
Beispiel #1 Auslesen der Spalte der Vornamen aus einem Datensatz
<?php
// Ein Array, das einen Datensatz enthält, wie er von einer Datenbank
// stammen könnte
$records = array(
array(
'id' => 2135,
'first_name' => 'John',
'last_name' => 'Doe',
),
array(
'id' => 3245,
'first_name' => 'Sally',
'last_name' => 'Smith',
),
array(
'id' => 5342,
'first_name' => 'Jane',
'last_name' => 'Jones',
),
array(
'id' => 5623,
'first_name' => 'Peter',
'last_name' => 'Doe',
)
);
$first_names = array_column($records, 'first_name');
print_r($first_names);
?>
Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
Array ( [0] => John [1] => Sally [2] => Jane [3] => Peter )
Beispiel #2 Abrufen der Spalte der Nachnamen aus einem Datensatz, indiziert durch die Spalte "id"
<?php
// Verwenden des Arrays $records aus Beispiel #1
$last_names = array_column($records, 'last_name', 'id');
print_r($last_names);
?>
Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
Array ( [2135] => Doe [3245] => Smith [5342] => Jones [5623] => Doe )
Beispiel #3 Abrufen der Spalte mit den Benutzernamen aus der öffentlichen Eigenschaft "username" eines Objekts
<?php
class User
{
public $username;
public function __construct(string $username)
{
$this->username = $username;
}
}
$users = [
new User('user 1'),
new User('user 2'),
new User('user 3'),
];
print_r(array_column($users, 'username'));
?>
Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
Array ( [0] => user 1 [1] => user 2 [2] => user 3 )
Beispiel #4 Abrufen der Spalte der Namen aus der privaten Eigenschaft "name" eines Objekts mit der magischen Methode __get()
<?php
class Person
{
private $name;
public function __construct(string $name)
{
$this->name = $name;
}
public function __get($prop)
{
return $this->$prop;
}
public function __isset($prop) : bool
{
return isset($this->$prop);
}
}
$people = [
new Person('Fred'),
new Person('Jane'),
new Person('John'),
];
print_r(array_column($people, 'name'));
?>
Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
Array ( [0] => Fred [1] => Jane [2] => John )