array_column

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

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

Описание

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

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

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

array

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

column_key

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

index_key

Ключ столбца, значения которого будут использоваться в качестве ключей возвращаемого массива. Может быть как целочисленным ключом, так и строковым. Тип значения приводится, как обычно для ключей массива (однако до PHP 8.0.0 объекты, поддерживающие преобразование к строке, также разрешены).

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

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

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

Версия Описание
8.0.0 Объекты в столбцах, обозначенные параметром index_key, больше не будут преобразованы в строку и вместо этого будут выдавать TypeError.

Примеры

Пример #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 из первого примера
$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(), то вернётся пустой массив.