array_multisort
Сортирует несколько массивов или многомерные массивы
&reftitle.description;
boolarray_multisort
arrayarr
mixedargSORT_ASC
mixedargSORT_REGULAR
mixed...
Функция array_multisort может быть использована для
сортировки сразу нескольких массивов или одного многомерного массива
в соответствии с одной или несколькими размерностями.
Ассоциативные (string) ключи будут сохранены, но
числовые ключи будут переиндексированы.
&reftitle.parameters;
arr
Сортируемый массив (array).
arg
Необязательные другие массивы (array), или опции сортировки
для предыдущего аргумента (array):
SORT_ASC,
SORT_DESC,
SORT_REGULAR,
SORT_NUMERIC,
SORT_STRING.
...
Дополнительные параметры (arg).
&reftitle.returnvalues;
&return.success;
&reftitle.examples;
Сортировка нескольких массивов
]]>
В вышеприведенном примере, после того, как будет осуществлена
сортировка, первый массив будет содержать 0, 10, 100, 100.
Второй - 4, 1, 2, 3. Элементы второго массива, соответствующие
идентичным элементам первого (100 и 100), также будут отсортированы.
int(0)
[1]=> int(10)
[2]=> int(100)
[3]=> int(100)
}
array(4) {
[0]=> int(4)
[1]=> int(1)
[2]=> int(2)
[3]=> int(3)
}
]]>
Сортировка многомерного массива
]]>
В вышеприведенном примере, после сортировки, первый массив
будет содержать "10", 100, 100, 11, "a" (его элементы были отсортированы в
возрастающем порядке), а второй массив будет содержать 1, 3, "2", 2, 1
(элементы отсортированы как числа, в порядке убывания).
array(5) {
[0]=> string(2) "10"
[1]=> int(100)
[2]=> int(100)
[3]=> int(11)
[4]=> string(1) "a"
}
[1]=> array(5) {
[0]=> int(1)
[1]=> int(3)
[2]=> string(1) "2"
[3]=> int(2)
[4]=> int(1)
}
}
]]>
Сортировка результатов из базы данных
В этом примере, каждый элемент массива data
представляет собой ряд таблицы. Такой тип данных типичен для
записей базы данных.
Примерные данные:
Данные представлены в виде массива с именем data. Обычно
их можно получить, к пример, с помощью цикла из функции mysql_fetch_assoc.
67, 'edition' => 2);
$data[] = array('volume' => 86, 'edition' => 1);
$data[] = array('volume' => 85, 'edition' => 6);
$data[] = array('volume' => 98, 'edition' => 2);
$data[] = array('volume' => 86, 'edition' => 6);
$data[] = array('volume' => 67, 'edition' => 7);
?>
]]>
В нашем примере мы будем сортировать по volume в убывающем
порядке, а по edition - в возрастающем.
У нас есть массив строк, но array_multisort
необходим массив столбцов, поэтому сначала мы используем следующий код
для получения столбцов, а потом выполним сортировку.
$row) {
$volume[$key] = $row['volume'];
$edition[$key] = $row['edition'];
}
// Сортируем данные по volume по убыванию и по edition по возрастанию
// Добавляем $data в качестве последнего параметра, для сортировки по общему ключу
array_multisort($volume, SORT_DESC, $edition, SORT_ASC, $data);
?>
]]>
Теперь данные отсортированы и будут выглядеть вот так:
Сортировка без учета регистра
Обе константы SORT_STRING и
SORT_REGULAR учитывают регистр при
сортировке, строки, начинающиеся с заглавной буквы будут
выставлены раньше строк, начинающихся со строчной буквы.
Для выполнения безрегистрового поиска нужно заставить выполнить
порядок сортировки по копии оригинального массива, переведенного
в нижний регистр.
]]>
&example.outputs;
Alpha
[1] => atomic
[2] => bank
[3] => Beta
)
]]>
&reftitle.seealso;
usort
&seealso.array.sorting;