Функция array_multisort

bool array_multisort  ( array &$arr  [, mixed $arg = SORT_ASC  [, mixed $arg = SORT_REGULAR  [, mixed $...  ]]] )
Функция позволяет сортировать несколько массивов одновременно, а также сортировать многомерный массив по выбранным измерениям. Ассоциативные индексы сохраняться, а целочисленные индексы - переиндексируются!

На входе единственный обязательный параметр $arr - массив для сортировки.
Остальные параметры $arg не обязательные,  они могут быть другими массивами для сортировки, или же флагами сортировки, указывающие как именно сортировать, напрмиер SORT_ASC - сортировать по возрастанию и т.п.

Пример 1. Сортировка двух массивов.

$ar1 = array(10, 100, 100, 0);
$ar2 = array(1, 3, 2, 4);
array_multisort($ar1, $ar2);

В результате первый массив будет содержать последовательность 0, 10, 100, 100, а второй будем переопределен согласно первому массиву, т.е. 4, 1, 2, 3. В первом массиве элемент 100 повторяется дважды, но во втором массиве соотвествующие элементы (2, 3) будут отсортированы.

Пример 2. Сортировка многомерных массивов.

$ar = array(
       array("10", 11, 100, 100, "a"),
       array(   1,  2, "2",   3,   1)
      );
array_multisort($ar[0], SORT_ASC, SORT_STRING,
                $ar[1], SORT_NUMERIC, SORT_DESC);

В результате в массиве $ar[0] будет "10", 100, 100, 11, "а", то есть сортировка произведена по возрастанию (флаг - SORT_ASC), построчно (флаг SORT_STRING). То есть перед сортировкой все элементы приводятся к строковому типу (string) и только затем сортируются. Точно так же будет отсортирован второй подмассив $ad[1], только сначала все элементы будут приведены к целочисленному типу (флаг SORT_NUMERIC) и сортировка будет произведена по убыванию (флаг SORT_DESC).

Страницы: 1 2 все