(PHP 5 >= 5.5.0, PHP 7, PHP 8)
array_column — Возвращает массив из значений одного столбца входного массива
Функция 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 = [
[
'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);
?>
Результат выполнения приведённого примера:
Array ( [0] => John [1] => Sally [2] => Jane [3] => Peter )
Пример #2 Пример получения столбца с фамилиями из набора записей и индексации фамилий значениями столбца "id"
<?php
// Возьмём массив $records из первого примера
$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);
?>
Результат выполнения приведённого примера:
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" путём определения магических методов __isset() и __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 )