array_multisort Сортирует несколько массивов или многомерные массивы &reftitle.description; boolarray_multisort arrayarray1 mixedarray1_sort_orderSORT_ASC mixedarray1_sort_flagsSORT_REGULAR mixedrest Функция array_multisort может быть использована для сортировки сразу нескольких массивов или одного многомерного массива в соответствии с одной или несколькими размерностями. Ассоциативные (string) ключи будут сохранены, но числовые ключи будут переиндексированы. ¬e.sort-unstable; &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']; } // Начиная с PHP 5.5.0 вы можете использовать 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;