Liefert die Werte einer einzelnen Spalte eines Arrays

# array_column

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

array_column — Liefert die Werte einer einzelnen Spalte eines Arrays

### Beschreibung

function array_column(array `$array`, int|string|null `$column_key`, int|string|null `$index_key` = `null`): array

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.

### Parameter-Liste

`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).

### Rückgabewerte

Gibt ein Array von Werten zurück, das eine einzelne Spalte aus dem angegebenen Array enthält.

### Changelog

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.

### Beispiele

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 = [
        [
            'id' => 2135,
            'first_name' => 'John',
            'last_name' => 'Doe',
        ],
        [
            'id' => 3245,
            'first_name' => 'Sally',
            'last_name' => 'Smith',
        ],
        [
            'id' => 5342,
            'first_name' => 'Jane',
            'last_name' => 'Jones',
        ],
        [
            '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
    $records = [
        [
            'id' => 2135,
            'first_name' => 'John',
            'last_name' => 'Doe',
        ],
        [
            'id' => 3245,
            'first_name' => 'Sally',
            'last_name' => 'Smith',
        ],
        [
            'id' => 5342,
            'first_name' => 'Jane',
            'last_name' => 'Jones',
        ],
        [
            'id' => 5623,
            'first_name' => 'Peter',
            'last_name' => 'Doe',
        ]
    ];

    $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
    )

Wenn __isset() nicht angegeben wird, wird ein leeres Array zurückgegeben.
`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open