Работа с массивами : Переменные и
массивы
list
Заносит элементы массива в
переменные.
Синтаксис :
list() - языковая конструкция
(наподобие array()). Она
присваивает перечисленным переменным
значения элементов массива, причем
первой переменной присваивается
первый элемент массива, второй
переменной - второй элемент и т.д.
compact
Упаковывает в массив переменные из
текущего контекста.
Синтаксис :
array compact(mixed varname1 [,
mixed $varname2, ...])
Функция compact() упаковывает
в массив переменные из текущего
контекста (глобального или контекста
функции), заданные своими именами в
varname1, $varname2 и т.д.
При этом в массиве образуются пары с
ключами, равными содержимому
varnameN, и значениями
соответствующих переменных.
Число аргументов может быть
неопределенное.
Если в аргументе указано имя
несуществующей переменной, он
пропускается. Действие этой функции
противоположно функции extract().
$a="Test string";
$b="Some text";
$A=compact("a","b");
// теперь $A===array("a"=>"Test string", "b"=>"Some text")
Почему же тогда параметры функции
обозначены как mixed? Дело в том,
что они могут быть не только
строками, но и списками строк. В
этом случае функция последнего
перебирает все элементы этого
списка, и упаковывает те переменные
из текущего контекста, имена которых
она встретила. Более того - эти
списки могут, в свою очередь, также
содержать списки строк, и т.д.
Правда, последнее используется
достаточно редко.
$a="Test";
$b="Text";
$c="CCC";
$d="DDD";
$List=array("b",array("c","d"));
$A=compact("a",$List);
// теперь $A===array("a"=>"Test", "b"=>"Text",
"c"=>"CCC", "d"=>"DDD")
extract
экспорт элементов массива в
переменные.
Синтаксис :
void extract(array arr [, int
extract_type] [, string prefix])
Эта функция производит действия,
прямо противоположные compact().
А именно, она получает в параметрах
массив arr и превращает
каждую его пару ключ=>значение
в переменную текущего контекста.
Параметр extract_type
предписывает, что делать, если в
текущем контексте уже существует
переменная с таким же именем, как
очередной ключ в arr. Он
может быть равен одной из констант,
перечисленных в следующей таблице:
|
По умолчанию подразумевается
EXTR_OVERWRITE, т.е. переменные
перезаписываются.
// Сделать все переменные окружения глобальными
extract($HTTP_ENV_VARS);
// То же самое, но с префиксом E_
extract($HTTP_ENV_VARS, EXTR_PREFIX_ALL, "E_");
echo $E_COMSPEC;
// Выводит переменную окружения COMSPEC
Параметр prefix имеет смысл
указать только тогда, когда вы
применяете режимы
EXTR_PREFIX_SAME или
EXTR_PREFIX_ALL.