Анимация
JavaScript


Главная  Библионтека 

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 [ 77 ] 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189

Функция array unique() возвращает массив, составленный из всех уникальных значений массива $Arr вместе с их ключами. В результирующий массив помещаются первые встретившиеся пары ключ=>значение:

$input=array("a" => "green", "red", "b" => "green", "blue", "red"); $result=array unique($input);

теперь $result===array("a"=>"green", "red", "blue");

array array splice(array &$Arr, int $offset [, int $len] [, int $Repl])

Эта функция, также как и array slice() , возвращает подмассив $Arr, начиная с индекса $offset максимальной длины $len, но, вместе с тем, она делает и другое полезное действие. А именно, она заменяет только что указанные элементы на то, что находится в массиве $Repl (или просто удаляет, если $Repl не указан). Параметры $offset и $len задаются так же, как и в функции substr() - а именно, они могут быть и отрицательными, в этом случае отсчет начинается от конца массива. За детальными разъяснениями обращайтесь к описанию функции substr(), рассмотренной в предыдущей главе.

Приведу несколько примеров:

$input=array("red", "green", "blue", "yellow"); array splice($input,2);

Теперь $input===array("red", "green")

array splice($input,1,-1);

Теперь $input===array("red", "yellow")

array splice($input, -1, 1, array("black", "maroon"));

Теперь $input===array("red", "green", "blue", "black", "maroon")

array splice($input, 1, count($input), "orange");

Теперь $input===array("red", "orange")

Последний пример показывает, что в качестве параметра $Repl мы можем указать и обычное, строковое значение, а не массив из одного элемента.

Переменные и массивы

array compact(mixed $vn1 [, mixed $vn2,

Функция compact() , впервые появившаяся в PHP версии 4, упаковывает в массив переменные из текущего контекста (глобального или контекста функции), заданные своими именами в $vn1 , $vn2 и т. д. При этом в массиве образуются пары с ключами, равными содержимому $vnN, и значениями соответствующих переменных. Вот пример использования этой функции:

$a="Test string";



Константа Действие

EXTR OVERWRiTE Переписывать существующую переменную (по умолчанию)

EXTR SKIP Не перезаписывать переменную, если она уже существует

EXTR PREFIX SAME В случае совпадения имен создавать переменную с именем, предваренным префиксом из $prefix. Надо сказать, что на практике этот режим должен быть совершенно бесполезен

EXTR PREFIX ALL Всегда предварять имена создаваемых переменных префиксом $prefix

По умолчанию подразумевается extr overwrite, т. е. переменные перезаписываются. Вот пара примеров применения этой функции:

Сделать все переменн1е окружения глобальн1ми

$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 в случае совпадения переменных



extract($HTTP ENV VARS);

То же самое, но с префиксом E

extract($HTTP ENV VARS, EXTR PREFIX ALL, "E ");

echo $E COMSPEC; в1водит переменную окружения COMSPEC

Примечание

Параметр $prefix имеет смысл указывать только тогда, когда вы применяете

режимы EXTR PREFIX SAME или EXTR PREFIX ALL.

Вообще говоря, использование extract() и compact() может быть оправдано лишь для небольших массивов, да и то только в шаблонах, а в остальных случаях считается признаком дурного тона. Впрочем, если ваш дизайнер никак не может понять, зачем же ему в шаблонах страниц гостевой книги указывать все эти ужасные квадратные скобки и апострофы, можете пойти ему навстречу так:

<table width=100%>

<?foreach($Book as $Entry) { extract($Entry)?> <tr>

<td>Имя: <?=$name?></td> <!- вместо $Entry[name] ->

<td>Ддрес: <?=$url?></td> <!- вместо $Entry[url] ->

</tr>

<tr><td colspan=3><?=$text?></td></tr>

<tr><td colspan=3><hr></td></tr> <?}?> </table>

Здесь вы должны загодя позаботиться, чтобы ключи $Entry ненароком не затерли нужные переменные. Этого можно добиться, например, назвав все важные переменные с прописной буквы (например, $Book и $Entry), а все ключи - с маленькой, как и было сделано немного выше.

Создание списка - диапазона чисел

list range(int $low, int $high)

Эта функция очень простая. Она создает список, заполненный целыми числами от $low до $high включительно. Ее удобно применять, если мы хотим быстро сгенерировать массив для последующего прохождения по нему циклом foreach:

<table>

<?foreach(range(1,100) as $i) {?> <tr>

<td><?=$i?></td>



0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 [ 77 ] 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189