|
которых начинаются с 0 и не
имеют пропусков). Функция sort() сортирует список (разумеется, по значениям) в
порядке возрастания, а rsort() — в порядке убывания. Например:
$A=array("One", "Two", "Three", "Four");
sort($A);
for($i=0; $iзначение не сохраняются, более того — ключи просто
пропадают, поэтому сортировать что-либо, отличное от списка, вряд ли целе-
сообразно.
Сортировка списка при помощи
функции usort()
Эта функция как бы является "гибридом" функций uasort() и sort(). От sort()
она отличается тем, что критерий сравнения обеспечивается пользовательской
функ-
цией. А от uasort() — тем, что она не сохраняет связей между ключами и значе-
ниями, а потому пригодна разве что для сортировки списков. Вот тривиальный при-
мер:
function FCmp($a,$b) { return strcmp($a,$b); }
$A=array("One","Two","Three","Four");
usort($A);
for($i=0; $i$b. В принципе, приведенный здесь пример
полностью эквивалентен простому вызову sort().
Перемешивание списка shuffle()
Функция shuffle() "перемешивает" список, переданный ей первым параметром,
так, чтобы его значения распределялись случайным образом. Обратите внимание,
что, во-первых, изменяется сам массив, а во-вторых, ассоциативные массивы
воспри-
нимаются как списки. Пример:
$A=array(10,20,30,40,50);
shuffle($A);
foreach($A as $v) echo "$v ";
Приведенный фрагмент выводит числа 10, 20, 30, 40 и 50 в случайном порядке.
Выполнив этот фрагмент несколько раз, вы можете обнаружить, что от запуска
к запуску очередность следования чисел не изменяется. Это свойство обу-
словлено тем, что функция shuffle() использует стандартный генератор
Часть IV. Стандартные функции PHP 230
случайных чисел, который перед работой необходимо инициализировать при
помощи вызова srand(). Подробности можно найти в следующей главе (см.
функцию mt_srand()). Она — не совсем то, что нам требуется (нам нужна
srand()), но формы записи обеих функций не различаются.
Ключи и значения
array array_flip(array $Arr)
Эта функция "пробегает" по массиву и меняет местами его ключи и значения.
Исход-
ный массив $Arr не изменяется, а результирующий массив просто возвращается.
Конечно, если в массиве присутствовали несколько элементов с одинаковыми значе-
ниями, учитываться будет только последний из них:
$A=array("a"=>"aaa", "b"=>"aaa", "c"=>"ccc");
$A=array_flip($A);
// теперь $A===array("aaa"=>"b", "ccc"=>"c");
list array_keys(array $Arr [,mixed $SearchVal])
Функция возвращает список, содержащий все ключи массива $Arr. Если задан не-
обязательный параметр $SearchVal, то она вернет только те ключи, которым соот-
ветствуют значения $SearchVal.
Фактически, эта функция с заданным вторым параметром является обратной
по отношению к оператору [] — извлечению значения по его ключу.
list array_values(array $Arr)
Функция array_values() возвращает список всех значений в ассоциативном мас-
сиве $Arr. Очевидно, такое действие бесполезно для списков, но иногда оправдано
для хэшей.
bool in_array(mixed $val, array $Arr)
Возвращает true, если элемент со значением $val присутствует в массиве $Arr.
Впрочем, если вам часто приходится проделывать эту операцию, подумайте: не луч-
ше ли будет воспользоваться ассоциативным массивом и хранить данные в его клю-
чах, а не в значениях? На этом вы можете сильно выиграть в быстродействии.
array array_count_values(list $List)
Эта функция подсчитывает, сколько раз каждое значение встречается в списке
$List,
и возвращает ассоциативный массив с ключами — элементами списка и значения-
ми — количеством повторов этих элементов. Иными словами, функция
Г
|
|