(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 = 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 )