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(), то вернётся пустой массив.
To Top