(PHP 3 >= 3.0.7, PHP 4, PHP 5)
extract -- Импортировать переменные из массива в текущую символьную таблицу.
Эта функция используется для импорта переменных из массива в текущую символьную таблицу.
Она берёт ассоциативный массив в качестве параметра
var_array
и трактует его ключи как имена переменных
и значения как значения переменных. Для каждой пары ключ/значение будет
создана переменная в текущей символьной таблице, согласно параметрам
extract_type
и
prefix
.
Замечание: Начиная с версии 4.0.5, эта функция возвращает количество извлечённых переменных.
Замечание: EXTR_IF_EXISTS и EXTR_PREFIX_IF_EXISTS были добавлены в версии 4.2.0.
Замечание: EXTR_REFS был добавлен в версии 4.3.0.
extract() проверяет каждый ключ на соответствие
приемлемости в качестве имени переменной. Эта функция также обрабатывает
коллизии имён, если ключ совпадает с именем переменной, уже существующей
в текущей символьной таблице. Способ обработки неприемлемых/числовых
ключей и коллизий имён устанавливает параметр
extract_type
. Он может принимать одно из следующих
значений:
Если переменная с таким именем существует, она будет переназначена.
Если переменная с таким именем существует, будет сохранено её прежнее значение.
Если переменная с таким именем существует, к её имени будет добавлен
префикс, определённый параметром prefix
.
Добавить префикс prefix
ко всем именам переменных.
Начиная с PHP 4.0.5, также включает числовые имена.
Добавить префикс prefix
только к неприемлемым/числовым
именам переменных. Этот флаг был добавлен в PHP 4.0.5.
Переназначить только переменные, уже имеющиеся в текущей символьной таблице, в противном случае ничего не делать. Данная возможность полезна для определения списка приемлемых переменных и для извлечения только тех переменных, которые вы уже определили из массивов типа $_REQUEST, например. Этот флаг был добавлен в PHP 4.2.0.
Создать переменные, имена которых начинаются с prefix
только если переменная с названием, которому не предшествует prefix
,
определена в текущей символьной таблице.
Этот флаг был добавлен в PHP 4.2.0.
Извлечь переменные как ссылки. Это означает, что значения таких переменных
будут всё ещё ссылаться на значения массива var_array
.
Вы можете использовать этот флаг
отдельно или комбинировать его с другими, используя OR. Этот флаг был добавлен в PHP 4.3.0.
Если extract_type
не определён, он
трактуется как EXTR_OVERWRITE.
Обратите внимание, что prefix
имеет значение, только если
extract_type
установлен в EXTR_PREFIX_SAME,
EXTR_PREFIX_ALL, EXTR_PREFIX_INVALID
или EXTR_PREFIX_IF_EXISTS. Если
в результате добавления префикса, не будет получено допустимое имя для переменной,
она не будет импортирована в текущую символьную таблицу.
extract() возвращает количество переменных, успешно импортированных в символьную таблицу.
Внимание |
Не используйте функцию extract() для непроверенных данных, таких как
пользовательский ввод ($_GET, ...). Если вы сделаете это, например,
для того, что бы временно запустить старый код, использующий
register_globals,
используйте соответствующий флаг |
Функцию 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.
См. также compact().
Пред. | Начало | След. |
end | Уровень выше | in_array |