Функции за работа с масиви
PHP Manual

extract

(PHP 4, PHP 5)

extractВмъква променливи от масив в текущата символна таблица

Описание

int extract ( array $var_array [, int $extract_type = EXTR_OVERWRITE [, string $prefix ]] )

Вмъква променливи от масив в текущата символна таблица

extract() проверява дали всеки ключ е валидно име на променлива. Също така проверява за противоречия с променливи, вече съществуващи в символната таблица.

Параметри

var_array

Асоциативен масив. Функцията третира ключовете като имена на променливи и стойностите като стойности на променливите. За всяка двойка ключ/стойност тя ще създаде променлива ви текущата символна таблица, на базата на параметрите extract_type и prefix .

Трябва да използвате асоциативен масив - масив с числени индекси няма да изведе резултати, освен ако не използвате EXTR_PREFIX_ALL или EXTR_PREFIX_INVALID.

extract_type

Начинът, по който се обработват невалидни/числови ключове и противоречия, зависи от параметъра extract_type . Той може да приема някоя от следните стойности:

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
Извлича променливи като референции. Това на практика означава, че стойностите на вмъкнатите променливи все още ще сочат към стойностите на параметъра var_array . Можете да използвате този флаг самостоятелно или да го комбинирате с някой друг флаг, посредством OR и extract_type .

Ако параметърът extract_type не е указан, се приема, че има стойност EXTR_OVERWRITE.

prefix

Забележете, че параметърът 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_arrayEXTR_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

Вж. също


Функции за работа с масиви
PHP Manual