array_column

Return the values from a single column in the input array

&reftitle.description; `array` `array_column` `array` `array` ``int``string``null```column_key` ``int``string``null```index_key`&null;

`array_column` returns the values from a single column of the `array`, identified by the `column_key`. Optionally, an `index_key` may be provided to index the values in the returned array by the values from the `index_key` column of the input array.

&reftitle.parameters;

`array`

- A multi-dimensional array or an array of objects from which to pull a column of values from. If an array of objects is provided, then public properties can be directly pulled. In order for protected or private properties to be pulled, the class must implement both the `__get` and `__isset` magic methods.

`column_key`

- The column of values to return. This value may be an integer key of the column you wish to retrieve, or it may be a string key name for an associative array or property name. It may also be &null; to return complete arrays or objects (this is useful together with `index_key` to reindex the array).

`index_key`

- The column to use as the index/keys for the returned array. This value may be the integer key of the column, or it may be the string key name. The value is cast as usual for array keys (however, prior to PHP 8.0.0, objects supporting conversion to string were also allowed).

&reftitle.returnvalues;

Returns an array of values representing a single column from the input array.

&reftitle.changelog;

&Version; | &Description;
8.0.0 | Objects in columns indicated by `index_key` parameter will no longer be cast to string and will now throw a `TypeError` instead.

&reftitle.examples;

### Get the column of first names from a recordset

    <?php
    // Array representing a possible record set returned from a database
    $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);
    ?>

&example.outputs;

    Array
    (
        [0] => John
        [1] => Sally
        [2] => Jane
        [3] => Peter
    )

### Get the column of last names from a recordset, indexed by the "id" column

    <?php
    // Using the $records array from Example #1
    $last_names = array_column($records, 'last_name', 'id');
    print_r($last_names);
    ?>

&example.outputs;

    Array
    (
        [2135] => Doe
        [3245] => Smith
        [5342] => Jones
        [5623] => Doe
    )

### Get the column of usernames from the public "username" property of an object

    <?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'));
    ?>

&example.outputs;

    Array
    (
        [0] => user 1
        [1] => user 2
        [2] => user 3
    )

### Get the column of names from the private "name" property of an object using the magic `__get` method.

    <?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'));
    ?>

&example.outputs;

    Array
    (
        [0] => Fred
        [1] => Jane
        [2] => John
    )

If `__isset` is not provided, then an empty array will be returned.