array_multisort Сортирует несколько массивов или многомерные массивы &reftitle.description; boolarray_multisort arrayarray1 mixedarray1_sort_orderSORT_ASC mixedarray1_sort_flagsSORT_REGULAR mixedrest Функцией array_multisort пользуются для одновременной сортировки нескольких массивов или одного многомерного массива по одному или несколькими уровням вложенности. Ассоциативные строковые (string) ключи будут сохранены, но числовые ключи будут переиндексированы. ¬e.sort-unstable; ¬e.reset-index; &reftitle.parameters; array1 Сортируемый массив (array). array1_sort_order Порядок, в котором будет отсортирован аргумент-массив (array), заданный перед этим параметром. Разрешено указывать одну из констант: SORT_ASC для сортировки по возрастанию, или SORT_DESC для сортировки по убыванию. Этот параметр разрешено менять местами с параметром array1_sort_flags или не указывать, тогда за основу будет взято значение SORT_ASC. array1_sort_flags Настройки сортировки для аргумента-массива (array), который был указан перед этим параметром: Флаг способа сортировки: SORT_REGULAR — обычное сравнение элементов (без изменения типов) SORT_NUMERIC — сравнение элементов как чисел SORT_STRING — сравнение элементов как строк SORT_LOCALE_STRING — сравнение элементов как строк с учётом установленного языкового стандарта (локали). Будет выбран языковой стандарт, который разрешено менять функцией setlocale SORT_NATURAL — сравнение элементов как строк через алгоритм естественной сортировки (natural order), как в функции natsort SORT_FLAG_CASE — разрешено объединять (бинарным ИЛИ) с SORT_STRING или SORT_NATURAL для сортировки без учёта регистра Этот аргумент разрешено менять местами с параметром array1_sort_order или не указывать, тогда за основу будет взято значение SORT_REGULAR. rest Дополнительные массивы, необязательно следующие после порядка сортировки и флагов. Сравниваются только элементы, которые соответствуют таким же элементам в предыдущих массивах. То есть массивы сортируются в лексикографическом порядке. &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. Обычно их можно получить, например, с в цикле функции mysqli_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']; } // Получение тех же данных функцией array_column() вместо перебора $volume = array_column($data, 'volume'); $edition = array_column($data, '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;