(PHP 4, PHP 5, PHP 7, PHP 8)
compact — Создаёт массив с названиями и значениями переменных
Функия создаёт массив, который содержит названия и значения переменных.
Функция compact() выполняет операцию, противоположную функции extract(): рассматривает каждую строку в аргументах как название переменной, ищет в текущей таблице символов переменную с таким названием и добавляет переменную в выходной массив так, что название переменной становится ключом, а содержимое переменной — значением этого ключа.
Замечание:
До PHP 7.3 функция без предупреждения пропускала строку, если в текущей области видимости не установили переменную с таким названием.
var_name
var_names
Функция compact() принимает неограниченное количество аргументов. Каждый аргумент разрешается передавать как строку, которая содержит название переменной, или как массив названий переменных. Функция умеет обрабатывать массивы с вложенными массивами названий переменных; функция compact() обрабатывает такие массивы рекурсивно.
Функция возвращает массив с переменными.
Функция compact() выдаёт ошибку уровня E_WARNING
,
если строка ссылается на переменную, которую не установили.
Версия | Описание |
---|---|
8.0.0 |
Функция теперь генерирует ошибку уровня E_WARNING ,
если строка ссылается на переменную, которую не установили.
|
7.3.0 |
Функция compact() теперь выдаёт ошибку уровня E_NOTICE ,
если строка ссылается на переменную, которую не установили. Раньше такие строки функция без предупреждения пропускала.
|
Пример #1 Пример добавления названий и значений переменных в массив функцией compact()
<?php
$city = "San Francisco";
$state = "CA";
$event = "SIGGRAPH";
$location_vars = array("city", "state");
$result = compact("event", $location_vars);
print_r($result);
?>
Результат выполнения приведённого примера:
Array ( [event] => SIGGRAPH [city] => San Francisco [state] => CA )
Замечание: Замечания по работе функции compact
Суперглобальные массивы нельзя передавать в функцию compact(), поскольку переменные переменных нельзя использовать с суперглобальными массивами внутри функций.