array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'ru', ), 'this' => array ( 0 => 'function.compact.php', 1 => 'compact', ), 'up' => array ( 0 => 'ref.array.php', 1 => 'Функции для работы с массивами', ), 'prev' => array ( 0 => 'function.asort.php', 1 => 'asort', ), 'next' => array ( 0 => 'function.count.php', 1 => 'count', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'ru', 'path' => 'reference/array/functions/compact.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
(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().