52680.fb2 Справочник по PHP - читать онлайн бесплатно полную версию книги . Страница 24

Справочник по PHP - читать онлайн бесплатно полную версию книги . Страница 24

$fruit[2]["fruit"]="grapes";

usort($fruit, "cmp");

while(list($key,$val)=each($fruit)) {

echo "$fruit[$key]:".$val["fruit"]."n";

}

При сортировке многомерных массивов $a и $b содержит ссылки на первый индекс массива.

Будет напечатано:

$fruit[0]: apples$fruit[1]: grapes$fruit[2]: lemons

Если необходимо отсортировать массив с различными вторыми ключами, можно поступить следующим образом:

<?php

function arr_sort($a,$b) {

list($key1,$val)=each($a);

list($key2,$val)=each($b);

return strcmp($a[$key1],$b[$key2]);

};

$arr[0]["1-ый элемент"]="яблока";

$arr[1]["2-ый элемент"]="груша";

$arr[2]["3-ый элемент"]="персик";

$arr[3]["4-ый элемент"]="дыня";

$arr[4]["5-ый элемент"]="малина";

$arr[5]["6-ый элемент"]="ананас";

usort($arr,"arr_sort");

echo "<pre>";

print_r($arr);

echo "</pre>";

?>

Приведенный скрипт выведет следующее:

Array( [0] => Array ( [6-ый элемент] => ананас ) [1] => Array ( [2-ый элемент] => груша ) [2] => Array ( [4-ый элемент] => дыня ) [3] => Array ( [5-ый элемент] => малина ) [4] => Array ( [3-ый элемент] => персик ) [5] => Array ( [1-ый элемент] => яблока ))

Функция поддерживается PHP 3 =3.0.3, PHP 4, PHP 5

array_multisort

Сортировка нескольких массивов или многомерного массива.

Синтаксис:

bool array_multisort(array ar1, [, mixed arg [, mixed ... [, array ...]]])

Функция array_multisort() сортирует сразу несколько массивов или многомерные массивы с сохранением индексной ассоциации, возвращая true при отсутствии ошибок.

Исходные массивы рассматриваются как столбцы таблицы, сортируемой построчно. Поэтому массивы должны иметь одинаковое число элементов, и взаимосвязь между ними, как в строках таблицы, сохраняется. Приоритетом сортировки пользуются первые массивы. Флаги сортировки могут указваться для каждого массива, и их действие распространяется только на тот массив, после которого они указаны.

Флаги определения порядка сортировки:

Флаги типа сортировки:

Уазание несколько флагов сортировки после одного массива недопустимо. Флаги сортировки, которые переются после аргумента arr применяются только к этому аргументу. Если после следующего аргумента флаги не указаны, то принимаются флаги по умолчанию (SORT_ASC, SORT_REGULAR).

Пример использования функции array_multisort():

Сортировка нескольких массивов

ar1 = array("10", 100, 100, "a");

ar2 = array(1, 3, "2", 1);

array_multisort($ar1, $ar2);

// $ar1 = array("10", "a", 100, 100);

// $ar2 = array(1, 1, "2", 3);

Элементы второго массива, соответствующие одинаковым элементам (100 и 100) первого массива, также отсортированны.

Сортировка многомерного массива

$ar = array(array("10", 100, 100, "a"), array(1, 3, "2", 1));

array_multisort($ar[0], SORT_ASC, SORT_STRING,

$ar[1], $SORT_NUMERIC, SORT_DESC);