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. Он может быть равен одной из констант, перечисленных
в следующей таблице:
| Поведение функции extract в случае совпадения переменных |
| EXTR_OVERWRITE | Переписывать существующую переменную. |
| EXTR_SKIP | Не перезаписывать переменную, если она уже существует. |
| EXTR_PREFIX_SAME | В случае совпадения имен создавать переменную с именем,
предваренным префиксом из $prefix. |
| EXTR_PREFIX_ALL | Всегда предварять имена создаваемых переменных префиксом $prefix. |
|
По умолчанию подразумевается
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.