Сортировка массивов
В РНР предусмотрены все возможные способы сортировки данных в массивах. Простейшим способом является функция sort, которая сортирует заданный массив по возрастанию значений его элементов. Ниже приведен пример использования этой функции.
<?php $fruits[0] = "яблоко"; $fruits[1] = "груша"; $fruits[2] = "абрикос"; print_r($fruits); sort($fruits); print_r($fruits); ?>
Ниже приведен результат выполнения этого примера. Массив $fruits отсортирован, а его элементы перенумерованы:
Array ( [0] => яблоко [1] => груша [2] => абрикос ) Array ( [0] => абрикос [1] => груша [2] => яблоко )
При помощи функции sort массив можно отсортировать по убыванию значений его элементов:
<?php $fruits[0] = "яблоко"; $fruits[1] = "груша"; $fruits[2] = "абрикос"; print_r($fruits); rsort($fruits); print_r($fruits); ?>
В результате будет выведено следующее:
Array ( [0] => яблоко [1] => груша [2] => абрикос ) Array ( [0] => яблоко [1] => груша [2] => абрикос )
Но что если в массиве используются строковые индексы? При использовании функций sort и rsort происходит перенумерация элементов массива, и информация о строковых индексах будет потеряна. В этом случае на помощь приходит функция assort, пример использования которой приведен ниже:
<?php $fruits['красный'] = "яблоко"; $fruits['зеленый'] = "груша"; $fruits['оранжевый'] = "абрикос"; print_r($fruits); asort($fruits); print_r($fruits); ?>
Результат выполнения примера выглядит так:
Array ( [красный] => яблоко [зеленый] => груша [оранжевый] => абрикос ) Array ( [оранжевый] => абрикос [зеленый] => груша [красный] => яблоко )
Функция arsort также сохраняет строковые индексы, но сортирует массив по убыванию. Функции ksort и krsort сортируют массив не по значениям элементов, а по их индексам (в возрастающем и убывающем порядке соответственно). Наконец, если определить собственную функцию сравнения элементов массива, то при помощи функции usort можно отсортировать массив по произвольному критерию.
Автор: Стивен Хольцнер. Переводчик: С. Банников