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).