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() - Импортирует переменные массива в текущую таблицу символов