compact

(PHP 4, PHP 5, PHP 7, PHP 8)

compactСоздаёт массив, содержащий названия переменных и их значения

Описание

compact(array|string $var_name, array|string ...$var_names): array

Создаёт массив, содержащий переменные и их значения.

Для каждого переданного аргумента функция 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().

Смотрите также

  • extract() - Импортирует переменные массива в текущую таблицу символов