РНР 5 в подлиннике

Страница 171 из 554


Гпава 16. Работа с массивами

347

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

list range (int $low, int $h±gh)

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

<table>

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

<tdx?=$i?x/td>

<td>3TO строка номер <?=$i?X/td> </tr> <?} ?> </table>

С точки зрения дизайнеров (не знакомых с РНР, но которым придется модифицировать внешний вид вашего сценария) представленный подход выглядит несколько лучше, чем следующий фрагмент:

<table>

<?for ($i=l; $i<=100; $i++) {?> <tr>

<tdx?=$i?x/td>

<td>3TO строка номер <?=$i?x/td> </tr> <?}?> </table>

Работа с множествами

Списки можно рассматривать, как множества элементов. В РНР существуют функции для выполнения основных теоретико-множественных операций с такими списками (объединение, пересечение, разность).

Пересечение

array array_intersect(array $arrayl, list $array2 [, list аггауЗ, ...])

Данная функция представляет собой операцию "пересечения" множеств. Она возвращает те значения массива $arrayi, которые присутствуют также и в $аггау2, $аггауЗ И Т. Д.

Например, мы знаем, что множество "чистых" цветов, которые может выводить монитор — это ("green", "red", "blue"}. Все остальные цвета являются их смешением. Пусть у нас есть некоторые цвета {"red", "yellow", "green", "cyan", "black"}, И мы хотим определить, которые из них являются "чистыми" (листинг 16.11).

i Листинг16.11. Файл arrayjntersect.php

<?php ## Пересечение множеств.

Snative = array("green", "red", "blue");

348

Часть IV. Стандартные функции РНР

$colors = arrayC'red", "yellow", "green", "cyan", "black");

$inter = array_intersect($colors, $native);

print_r($inter);

// Array([0]=>red [2]=>green)

?>

Обратите внимание, что функция возвращает не список, а именно ассоциативный массив. Это легко заметить, посмотрев на результат работы примера из листинга 16.11: итоговый массив содержит только ключи 0 и 2, а ключ 1 — отсутствует. То есть связь между ключами и значениями данная функция сохраняет.

Точно так же, если в качестве $arrayi передан ассоциативный массив, а не список, то в результирующем массиве будут присутствовать пары ключ=>значение именно из него.

Разность

array array_diff(array $arrayl, list $array2 [, list аггауЗ, ...])

Данная функция осуществляет теоретико-множественную операцию "разность множеств". Она возвращает массив, составленный из значений $arrayi, не входящих ни

В ОДИН ИЗ массивов $array2, $аггауЗ И Т. Д.

Возвращаемое значение подчиняется тем же правилам, что и в функции

array_intersect().

Объединение

К сожалению, в РНР нет специальной функции для объединения множеств. Тем не менее ее легко реализовать при помощи array_merge () и следующей функции.

array array_unique(array $array)

Функция array_unique о возвращает массив, составленный из всех уникальных значений массива $аггау вместе с их ключами. В результирующий массив помещаются

первые Встретившиеся Пары ключ=>значение\

$input = arrayC'a" => "green", "red", "b" => "green", "blue", "red"); $result = array_unique($input);

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

Данная функция может использоваться совместно с arraymerge(), чтобы получить теоретико-множественную операцию "объединение" (листинг 16.12).

Листинг 16.12. Файл merge.php

<?php ## Объединение множеств.

$native = array("green", "red", "blue");

$colors = arrayC'red", "yellow", "green", "cyan");

$inter = array_unique(array_merge($colors, $native));

print_r($inter);

// Array([0]=>red [l]=>yellow [2]=>green [3]=>cyan [6]=>blue) ?>




  Hostland.Ru

 «Бесплатный хостинг Hostland.Su» © 2006