extract - импортирует переменные в текущую таблицу символов из массива.
Описание
int extract (array var_array [, int extract_type [, string prefix]])
Эта функция используется для импорта переменных из массива в текущую таблицу символов. Она принимает ассоциативный массив
var_array и рассматривает ключи как имена переменных, а значения - как значения. Для
каждой пары key/value она создаёт переменную в текущей таблице символов - субъект параметров
extract_type и prefix.
Примечание:
начиная с версии 4.0.5, эта функция возвращает количество извлечённых переменных.
Примечание: EXTR_IF_EXISTS и EXTR_PREFIX_IF_EXISTS были введены в версии 4.2.0.
extract() проверяет каждый ключ/key - образует ли он верное имя переменной, а также
смотрит, нет ли конфликтов с существующими именами в таблице символов. Способ,
которым обрабатываются неверные/числовые ключи и конфликты, определяется в
extract_type. Это может быть одно из следующих значений:
EXTR_OVERWRITE
Если есть конфликт, существующая переменная перезаписывается.
EXTR_SKIP
Если есть конфликт, существующая переменная не перезаписывается.
EXTR_PREFIX_SAME
Если есть конфликт, вставить префикс prefix перед именем переменной.
EXTR_PREFIX_ALL
Вставить префикс prefix перед всеми именами переменных. Начиная с версии PHP 4.0.5, это могут быть
также и числа.
EXTR_PREFIX_INVALID
Вводить префикс prefix только перед неправильными/числовыми именами переменных. Этот флаг был добавлен
в PHP 4.0.5.
EXTR_IF_EXISTS
Перезаписывать переменную, только если она уже существует в текущей
таблице символов, иначе - не делать ничего. Это используется для
определения списка правильных переменных и последующего извлечения только
тех переменных, которые вы определили вне $_REQUEST, например. Этот флаг был добавлен в PHP 4.2.0.
EXTR_PREFIX_IF_EXISTS
Создавать префиксированные имена переменных только с том случае, если
версия без префикса той же самой переменной существует в текущей таблице
символов. Этот флаг был добавлен в PHP 4.2.0.
Если extract_type не специфицирован, принимается, что он будет EXTR_OVERWRITE.
Заметьте, что prefix необходим только тогда, когда extract_type равен EXTR_PREFIX_SAME,
EXTR_PREFIX_ALL, EXTR_PREFIX_INVALID или EXTR_PREFIX_IF_EXISTS. Если
результат с префиксом не является правильным именем переменной, он не импортируется в таблицу символов.
extract() возвращает количество переменных, успешно импортированных в таблицу символов.
Можно использовать extract для импорта в таблицу символов переменных, содержащихся в ассоциативном массиве, возвращаемом функцией
wddx_deserialize().
Переменная $size не была перезаписана, поскольку мы специфицировали EXTR_PREFIX_SAME, что даёт
в результате создание $wddx_size. Если EXTR_SKIP был специфицирован, то $wddx_size не могла бы быть создана.
EXTR_OVERWRITE мог бы дать для $size значение "medium", а EXTR_PREFIX_ALL привело бы к созданию новых переменных $wddx_color,
$wddx_size и $wddx_shape.
Вы обязаны использовать ассоциативный массив, так как массив,
индексированный числами, не даст нужных результатов, если только вы не используете EXTR_PREFIX_ALL или
EXTR_PREFIX_INVALID.