Сортировка массивов
Одной из самых замечательных возможностей, предоставляемых языком РНР при работе с массивами, является их сортировка. Исходно интерпретатор РНР размещает значения элементов массива в указанном вами порядке и позволяет соответствующим образом выводить их. Очень часто необходимо изменить порядок следования элементов. Например, нужно отсортировать элементы массива в алфавитном порядке по индексу или по значению.
Язык РНР предоставляет широкие возможности при сортировке массивов. Например, чтобы изменить порядок следования элементов массива с числами в качестве индексов, следует воспользоваться функцией sort():
sort($имя_массива); Это выражение сортирует элементы массива по значению и присваивает им новые индексы в порядке следования. При этом сначала идут значения, начинающиеся с чисел, потом — с прописных и строчных букв. Например, рассмотрим массив $streets:
$streets[0] = "ул. Вязов"; $streets[1] = "ул. Дубов"; $streets[2] = "7-ая авеню";
Использование выражения sort($streets); приведет к следующему: $streets[0] = "7-ая авеню"; $streets[1] = "ул. Вязов"; $streets[2] = "ул. Дубов"; Если же использовать функцию sort() для сортировки массива, индексами которого являются текстовые строки, РНР преобразует их в числа.
Поэтому для таких целей необходимо воспользоваться функцией asort(): asort($capitals); Это выражение сортирует значения столиц по значению, при этом не изменяя индексы массива. Рассмотрим массив $capitals, созданный в предыдущем разделе:
$capitals['СА'] = "Сакраменто"; $capitals['TX'] = "Остин"; $capitals['OR'] = "Салем";
При использовании выражения asort($capitals); получим следующее: $capitals['TX'] = "Остин" $capitals['СА'] = "Сакраменто" $capitals['OR'] = "Салем"
Заметим, что порядок следования индексов массива изменяется в соответствии со значениями. Теперь столицы расположены в алфавитном порядке. Если бы в качестве индексов массива использовались числа, то они бы тоже поменяли свой порядок. Например, пусть имеется массив
$capitals[1] = "Сакраменто"; $capitals[2] = "Остин"; $capitals[3] = "Салем";
Результатом выполнения функции asort() будет: $capitals[2] = "Остин" $capitals[1] = "Сакраменто" $capitals[3] = "Салем"
Врядли эта функция будет полезна для массивов с числовыми индексами. Язык РНР предоставляет также и другие возможности для сортировки массивов различными способами. Ниже в таблице представлены необходимые для этого функции.
Сортировка массивов | Описание | sort($имя_массива) | Сортирует значения элементов массива по возрастанию, присваивая им при этом новые числовые индексы
| asort($имя_массива) | Сортирует значения элементов массива по возрастанию, не изменяя при этом индексы
| rsort($имя_массива) | Сортирует значения элементов массива по убыванию, присваивая при этом новые числовые индексы
| arsort($имя_массива) | Сортирует значения элементов массива по убыванию, не изменяя при этом индексы
| ksort($имя_массива) | Сортирует индексы элементов массива по возрастанию | krsort($имя_массива) | Сортирует индексы элементов массива по убыванию | usort($имя_массива, имя_функции)
| Пользовательская сортировка, определяемая функцией имя_функции | natsort($имя_массива) | Сортирует смешанные значения (текстовые и числовые) элементов массива и устанавливает "естественный" порядок. Например, массив со значениями day1, day5, day11, day2 будет отсортирован следующим образом: day1, day2, day5, day11. В то время как результатом выполнения функции sort() будет: day1, day11, day2, day5
|
|