extractПереводит элементы массива в переменные текущей таблицы символов
&reftitle.description;
intextractarrayarrayintflagsEXTR_OVERWRITEstringprefix""
Функция импортирует переменные в текущую таблицу символов
на основе элементов массива.
Функция проверяет каждый ключ на соответствие правилам именования переменных
и обрабатывает конфликты имён с переменными текущей таблицы символов.
Функцией extract опасно извлекать переменные из ненадёжных данных
наподобие суперглобальных переменных $_GET или $_FILES, которые содержат пользовательский ввод.
&reftitle.parameters;
array
Ассоциативный массив. Функция интерпретирует ключи массива
как названия переменных, а значения элементов — как значения переменных.
На основе каждой пары «ключ — значение» функция создаст
или обновит переменную в текущей таблице символов
с учётом значений параметров flags и prefix.
Функция ожидает ассоциативный массив; импорт переменных на основе элементов индексного массива
выполняется только при передаче флага EXTR_PREFIX_ALL
или EXTR_PREFIX_INVALID.
flags
Параметр flags определяет способ
обработки недопустимых или числовых ключей и коллизий. Параметр
принимает следующие значения:
EXTR_OVERWRITE
При коллизии перезаписывать переменную в текущей таблице символов.
EXTR_SKIP
При коллизии не перезаписывать переменную в текущей таблице символов.
EXTR_PREFIX_SAME
При коллизии добавлять к названию
переменной префикс
prefix.
EXTR_PREFIX_ALL
Добавлять префикс prefix к названию каждой переменной.
EXTR_PREFIX_INVALID
Добавлять префикс prefix
только к недопустимым или числовым названиям переменных.
EXTR_IF_EXISTS
Не создавать новые переменные, а только перезаписывать в текущей таблице символов.
Флаг полезен для определения «белого списка»
переменных, чтобы затем извлечь только предопределённые переменные, например,
из суперглобального массива $_REQUEST.
EXTR_PREFIX_IF_EXISTS
Создать только префикс-версии переменных,
если переменная без префикса уже содержится в текущей таблице символов.
EXTR_REFS
Извлечь переменные как ссылки:
переменные импортируются как ссылки
на значения элементов массива array.
Флаг работает отдельно или в комбинации с другими флагами
параметра flags при объединении через побитовое ИЛИ.
Значение параметра flags
по умолчанию равно EXTR_OVERWRITE.
prefix
Обратите внимание, параметр prefix
обязателен только при установке для параметра flags
флагов EXTR_PREFIX_SAME,
EXTR_PREFIX_ALL,
EXTR_PREFIX_INVALID
или EXTR_PREFIX_IF_EXISTS.
Переменная не импортируется в текущую таблицу символов,
если после добавления префикса создаётся
недопустимое название переменной. Между префиксом и ключом массива
автоматически вставляется символ подчёркивания: prefix_key.
&reftitle.returnvalues;
Функция возвращает количество переменных, затронутых в таблице символов.
&reftitle.examples;
Пример импорта переменных функцией extract
"blue",
"size" => "medium",
"shape" => "sphere"
);
extract($var_array, EXTR_PREFIX_SAME, "wddx");
echo "$color, $size, $shape, $wddx_size\n";
]]>
&example.outputs;
Переменная $size не перезаписалась
из-за установки флага EXTR_PREFIX_SAME,
поэтому функция создала переменную $wddx_size.
При установке флага EXTR_SKIP
функция не создала бы переменную $wddx_size.
С флагом EXTR_OVERWRITE
переменная $size получила бы
значение "medium", а при установке флага EXTR_PREFIX_ALL
функция создала бы
переменные $wddx_color,
$wddx_size и $wddx_shape.
&reftitle.notes;
Функцией extract опасно извлекать переменные из ненадёжных данных
наподобие суперглобальных переменных $_GET или $_FILES, которые содержат пользовательский ввод.
При вынужденном извлечении ненадёжных данных в параметр flags
передают константу EXTR_SKIP или другой флаг, который запрещает перезапись текущих значений,
и извлекают переменные с учётом порядка значений
в директиве variables_order
файла &php.ini;.
&reftitle.seealso;
compactlist