array_column

(PHP 5 >= 5.5.0, PHP 7)

array_columnВозвращает массив из значений одного столбца входного массива

Описание

array array_column ( array $input , mixed $column_key [, mixed $index_key = null ] )

array_column() возвращает массив из значений столбца массива input с ключем column_key. Опционально вы можете использовать index_key чтобы индексировать возвращаемый массив значениями из столбца с ключем index_key входного массива.

Список параметров

input

Многомерный массив или массив объектов, из которого будет производиться выборка значений. Если задан массив объектов, то можно выбирать любые его публичные свойства. Для выборки приватных или защищенных свойств, объект должен реализовывать магические методы __get() и __isset().

column_key

Ключ столбца значения которого нужно вернуть. Может содержать как числовой ключ так и строковой для ассоциативных массивов. А также может принимать значение NULL тогда возвращаются не значения определенного столбца а весь массив (полезно использовать вместе с index_key чтобы переиндексировать массив).

index_key

Ключ столбца значения которого будут использоваться в качестве ключей возвращаемого массива. Может быть как целочисленным ключем так и строковым.

Возвращаемые значения

Возвращает массив из значений одного столбца входного массива (набора записей).

Список изменений

Версия Описание
7.0.0 Добавлена возможность использовать массив объектов в input.

Примеры

Пример #1 Получим столбец с именами из набора записей

<?php
// Массив, представляющий из себя набор записей полученных из базы данных
$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);
?>

Результат выполнения данного примера:

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

Пример #2 Получим столбец с фамилиями, а в качестве ключей возвращаемого массива используем значения из столбца "id"

<?php
// Используем массив $records из Примера #1
$last_names array_column($records'last_name''id');
print_r($last_names);
?>

Результат выполнения данного примера:

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

Пример #3 Получим столбец имен пользователей из публичного свойства "username" объекта

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

Результат выполнения данного примера:

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

Пример #4 Получим столбец имен пользователей из приватного свойства "name" объекта используя магический метод __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'));
?>

Результат выполнения данного примера:

Array
(
    [0] => Fred
    [1] => Jane
    [2] => John
)
Если в объекте не будет метода __isset(), то вернется пустой массив.