|
range");
// Теперь $input===array("red", "orange")
Последний пример показывает, что в качестве параметра $Repl мы можем указать и
обычное, строковое значение, а не массив из одного элемента.
Переменные и массивы
array compact(mixed $vn1 [, mixed $vn2, …])
Функция compact(), впервые появившаяся в PHP версии 4, упаковывает в массив
переменные из текущего контекста (глобального или контекста функции), заданные
своими именами в $vn1, $vn2 и т. д. При этом в массиве образуются пары с ключа-
ми, равными содержимому $vnN, и значениями соответствующих переменных. Вот
пример использования этой функции:
$a="Test string";
Глава 13. Работа с массивами 235
$b="Some text";
$A=compact("a","b");
// теперь $A===array("a"=>"Test string", "b"=>"Some text")
Почему же тогда параметры функции обозначены как mixed? Дело в том, что они
могут быть не только строками, но и списками строк. В этом случае функция
после-
довательно перебирает все элементы этого списка, и упаковывает те переменные из
текущего контекста, имена которых она встретила. Более того — эти списки могут,
в
свою очередь, также содержать списки строк, и т. д. Правда, последнее
используется
сравнительно редко, но все же вот пример:
$a="Test";
$b="Text";
$c="CCC";
$d="DDD";
$Lst=array("b",array("c","d"));
$A=compact("a",$Lst);
// теперь $A===array("a"=>"Test", "b"=>"Text", "c"=>"CCC", "d"=>"DDD")
void extract(array $Arr [, int $type] [, string $prefix])
Эта функция производит действия, прямо противоположные compact().
А именно, она получает в параметрах массив $Arr и превращает каждую его пару
ключ=>значение в переменную текущего контекста.
Параметр $type предписывает, что делать, если в текущем контексте уже
существует
переменная с таким же именем, как очередной ключ в $Arr. Он может быть равен
одной из констант, перечисленных в табл. 13.1
Таблица 13.1. Поведение функции extract в случае совпадения переменных
Константа Действие
EXTR_OVERWRITE Переписывать существующую переменную (по умолчанию)
EXTR_SKIP Не перезаписывать переменную, если она уже существует
EXTR_PREFIX_SAME В случае совпадения имен создавать переменную с име-
нем, предваренным префиксом из $prefix. Надо сказать,
что на практике этот режим должен быть совершенно бес-
полезен
EXTR_PREFIX_ALL Всегда предварять имена создаваемых переменных пре-
фиксом $prefix
По умолчанию подразумевается EXTR_OVERWRITE, т. е. переменные перезаписыва-
ются. Вот пара примеров применения этой функции:
// Сделать все переменные окружения глобальными
Часть IV. Стандартные функции PHP 236
extract($HTTP_ENV_VARS);
// То же самое, но с префиксом E_
extract($HTTP_ENV_VARS, EXTR_PREFIX_ALL, "E_");
echo $E_COMSPEC; // выводит переменную окружения COMSPEC
Параметр $prefix имеет смысл указывать только тогда, когда вы применяете
режимы EXTR_PREFIX_SAME или EXTR_PREFIX_ALL.
Вообще говоря, использование extract() и compact() может быть оправдано
лишь для небольших массивов, да и то только в шаблонах, а в остальных случаях
считается признаком дурного тона. Впрочем, если ваш дизайнер никак не может по-
нять, зачем же ему в шаблонах страниц гостевой книги указывать все эти ужасные
квадратные скобки и апострофы, можете пойти ему навстречу так:
Имя: =$name?> |
Адрес: =$url?> |
=$text?> |
|
}?>
Здесь вы должны загодя позаботиться, чтобы ключи $Entry ненароком не затерли
нужные переменные. Этого можно добиться, например, назвав все важные перемен-
ные с прописной буквы (например, $Book и $Entry), а все ключи — с маленькой,
как и было сделано немного выше.
Создание списка – диапазона чисел
list range(int $low, int $hi
|
|