Функции Язык программирования PHP

extract

(PHP 3>= 3.0.7, PHP 4)

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().

Пример 1. extract()
<?php 
/* Предположим, что $var_array это массив, возвращаемый из wddx_deserialize */ 
$size = "large"; $var_array = array ("color" => "blue", "size"=> "medium", 
"shape" => "sphere"); extract ($var_array, EXTR_PREFIX_SAME, "wddx"); print 
"$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.

Вы обязаны использовать ассоциативный массив, так как массив, индексированный числами, не даст нужных результатов, если только вы не используете EXTR_PREFIX_ALL или EXTR_PREFIX_INVALID.

См. также compact().


Назад Оглавление Вперёд
end Вверх in_array

Глава 24. Использование PHP из командной строки

Исполняемый файл PHP может быть использован для запуска PHP-скриптов абсолютно независимо от web-сервера.
Если вы работаете под Unix, вы должны добавлять специальную первую строчку в ваши PHP-скрипты и делать их исполняемыми, чтобы система знала, какая программа должна выполнять эти скрипты.
Под Windows вы можете ассоциировать php.exe с опцией двойного щелчка по файлам .php либо сделать batch-файл (.bat) для запуска скрипта через PHP. Строка, добавленная в начало скрипта для работы под Unix, не помешает под Windows, поэтому вы можете писать таким образом межплатформенные программы. Ниже дан пример простой РНР-программы для выполнения из командной строки.

Пример 24-1. Скрипт, предназначенный для запуска из командной строки (script.php)
#!/usr/bin/php 
<?php if ($argc != 2 || in_array($argv[1], array('--help', '-help', '-h', 
'-?'))) { ?> This is a command line PHP script with one option. Usage: <?php 
echo $argv[0]; ?> <option> <option> can be some word you would 
like to print out. With the --help, -help, -h, or -? options, you can get this 
help. <?php } else { echo $argv[1]; } ?>