array_columnВозвращает массив из значений одного столбца входного массива
&reftitle.description;
arrayarray_columnarrayarrayintstringnullcolumn_keyintstringnullindex_key&null;
Функция array_column возвращает значения одного столбца массива
(array), обозначенного ключом column_key.
Чтобы проиндексировать значения возвращаемого массива значениями столбца index_key
входного массива, задают необязательный параметр index_key.
&reftitle.parameters;
array
Многомерный массив или массив объектов, из которого будет извлекаться
столбец значений. Если задан массив объектов, то разрешено выбирать любые его общедоступные
свойства. Чтобы извлечь закрытые или защищённые свойства, в классе
нужно реализовать два магических метода — __get и __isset.
column_key
Ключ столбца, значения которого нужно вернуть. Разрешено передавать как целочисленный ключ столбца,
так и строковое название ключа ассоциативного массива или свойства объекта, значения которого нужно получить.
В параметр также разрешено передавать значение &null;
для возврата полных массивов или объектов (это будет полезно
при одновременной передаче параметра index_key, чтобы переиндексировать массив).
index_key
Столбец, значения которого будут ключами или индексами возвращаемого массива.
Разрешено указывать как целочисленный ключ столбца,
так и строковое название ключа. Значение
приводится
как обычно для ключей массива (однако, до PHP 8.0.0 объекты, поддерживающие
преобразование к строке, были также разрешены).
&reftitle.returnvalues;
Возвращает массив из значений одного столбца или свойства объекта входного массива.
&reftitle.changelog;
&Version;&Description;8.0.0
Объекты в столбцах, обозначенные параметром index_key,
больше не будут преобразованы в строку и вместо этого будут выбрасывать исключение TypeError.
&reftitle.examples;
Получим столбец с именами из набора записей
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);
?>
]]>
&example.outputs;
John
[1] => Sally
[2] => Jane
[3] => Peter
)
]]>
Получим столбец фамилий из набора записей, проиндексировав их значениями столбца «id»
]]>
&example.outputs;
Doe
[3245] => Smith
[5342] => Jones
[5623] => Doe
)
]]>
Получим столбец имён пользователей из общедоступного свойства «username» объекта
username = $username;
}
}
$users = [
new User('user 1'),
new User('user 2'),
new User('user 3'),
];
print_r(array_column($users, 'username'));
?>
]]>
&example.outputs;
user 1
[1] => user 2
[2] => user 3
)
]]>
Получим столбец имён пользователей из приватного свойства «name» объекта, определив магический
метод __get.
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'));
?>
]]>
&example.outputs;
Fred
[1] => Jane
[2] => John
)
]]>
Если в объекте не будет метода __isset, то вернётся пустой массив.