(PHP 4, PHP 5)
extract — Вмъква променливи от масив в текущата символна таблица
Вмъква променливи от масив в текущата символна таблица
extract() проверява дали всеки ключ е валидно име на променлива. Също така проверява за противоречия с променливи, вече съществуващи в символната таблица.
Асоциативен масив. Функцията третира ключовете като имена на променливи и стойностите като стойности на променливите. За всяка двойка ключ/стойност тя ще създаде променлива ви текущата символна таблица, на базата на параметрите extract_type и prefix .
Трябва да използвате асоциативен масив - масив с числени индекси няма да изведе резултати, освен ако не използвате EXTR_PREFIX_ALL или EXTR_PREFIX_INVALID.
Начинът, по който се обработват невалидни/числови ключове и противоречия, зависи от параметъра extract_type . Той може да приема някоя от следните стойности:
Ако параметърът extract_type не е указан, се приема, че има стойност EXTR_OVERWRITE.
Забележете, че параметърът prefix се изисква, само ако параметърът extract_type има стойност EXTR_PREFIX_SAME, EXTR_PREFIX_ALL, EXTR_PREFIX_INVALID или EXTR_PREFIX_IF_EXISTS. Ако резултатът, с добавена представка, не представлява валидно име на променлива, то той не се вмъква в символната таблица. Представките се разделят автоматично от ключа на масива, посредством подчертаващо тире.
Връща броя на променливите, които са успешно вмъкнати в символната таблица.
Версия | Описание |
---|---|
4.3.0 | Добавена е EXTR_REFS. |
4.2.0 | Добавени са EXTR_IF_EXISTS и EXTR_PREFIX_IF_EXISTS. |
4.0.5 | Функцията вече връща броя на извлечените променливи. Добавена е EXTR_PREFIX_INVALID. EXTR_PREFIX_ALL включва числови променливи. |
Example #1 Пример за extract()
Функция extract() може да се използва за вмъкване в символната таблица на променливи, съдържащи се в асоциативния масив върнат от функция wddx_deserialize().
<?php
/* Допускаме, че $var_array е масивът върнат от
wddx_deserialize */
$size = "large";
$var_array = array("color" => "blue",
"size" => "medium",
"shape" => "sphere");
extract($var_array, EXTR_PREFIX_SAME, "wddx");
echo "$color, $size, $shape, $wddx_size\n";
?>
Примерът по-горе ще изведе:
blue, large, sphere, medium
Стойността на променливата $size не беше препокрита, тъй като указахме константата EXTR_PREFIX_SAME, в резултат на което беше създадена променливата $wddx_size. Ако беше указана константата EXTR_SKIP, тогава променливата $wddx_size нямаше да бъде създадена. Константа EXTR_OVERWRITE щеше да накара променлива $size да приеме стойността "medium", а константа EXTR_PREFIX_ALL щеше да доведе до създаването на нови променливи с имена $wddx_color, $wddx_size и $wddx_shape.
Не използвайте функция extract() с несигурни данни, като например потребителски вход ($_GET, ...). Ако я използвате, например ако искате да стартирате стар код, който разчита на register_globals, уверете се, че използвате някоя от непрепокриващите стойности на extract_type , като например EXTR_SKIP и знайте, че трябва да извлечете стойностите в същият ред, в който са дефинирани в директивата variables_order от файла php.ini