(PHP 5 >= 5.5.0, PHP 7, PHP 8)
array_column — Возвращает массив из значений одного столбца входного массива
$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 )