Как сортировать массивы в PHP с помощью функции asort()
Узнайте, как использовать функцию asort() в PHP для сортировки массивов по значению по возрастанию с сохранением связей ключ-значение.
Как веб-разработчик, вы можете столкнуться с ситуациями, когда нужно манипулировать массивами в PHP-коде. Одной из таких операций является сортировка массива. Встроенная функция asort() в PHP позволяет сортировать массив по значениям в порядке возрастания. В этой статье мы рассмотрим, как использовать функцию asort(), её синтаксис и примеры применения в коде.
Синтаксис asort()
Функция asort() сортирует массив по значениям в порядке возрастания, сохраняя при этом связи ключ-значение. Синтаксис функции выглядит следующим образом:
Синтаксис функции asort
asort($array, $sorting_type);Первый аргумент $array — это сортируемый массив. Второй аргумент $sorting_type является необязательным и задаёт тип сортировки. Возможные значения:
SORT_REGULAR— сравнивать элементы обычным образомSORT_NUMERIC— сравнивать элементы численноSORT_STRING— сравнивать элементы как строкиSORT_LOCALE_STRING— сравнивать элементы как строки с учётом текущей локали
Если параметр $sorting_type не указан, по умолчанию используется SORT_REGULAR. Обратите внимание, что asort() изменяет исходный массив на месте и возвращает true при успехе или false при неудаче — она не возвращает новый отсортированный массив, поэтому не пишите $sorted = asort($array), ожидая получить отсортированные данные в $sorted.
Когда использовать asort()
Главное отличие asort() от обычной sort() состоит в том, что она сохраняет привязку каждого значения к исходному ключу. Используйте asort(), когда ключи несут смысловую нагрузку, которую нельзя терять — например, в ассоциативном массиве, отображающем имена на баллы, идентификаторы на цены или имена пользователей на метки времени последнего входа. Если отсортировать такие данные с помощью sort(), PHP выбросит ключи и переиндексирует массив как 0, 1, 2, …, разрушив ассоциации.
Используйте sort() только тогда, когда массив представляет собой простой список и ключи являются лишь позициями, которые вам не важны.
Примеры asort()
Вот несколько примеров, иллюстрирующих использование функции asort() в PHP:
- Сортировка массива строк с помощью
asort():
Примеры asort()
- Сортировка массива целых чисел с помощью
asort():
Сортировка массива целых чисел с помощью asort()
- Сортировка ассоциативного массива с помощью
asort():
PHP: сортировка ассоциативного массива с помощью asort()
Распространённые ошибки
- Используйте
SORT_NUMERICдля числовых строк. При использованииSORT_REGULARпо умолчанию значения вроде"10"и"9"могут сравниваться как строки, ставя"10"перед"9". ПередавайтеSORT_NUMERIC, когда ваши значения являются числами (даже если они хранятся как строки), чтобы гарантировать числовой порядок. - Сортировка не была стабильной до PHP 8.0. В PHP 8.0 и более поздних версиях равные элементы сохраняют исходный относительный порядок; в более ранних версиях их порядок был неопределён.
- Функция возвращает boolean, а не массив. Поскольку сортировка происходит на месте, воспринимайте исходную переменную как результат.
Связанные функции сортировки
PHP предлагает семейство функций для сортировки массивов, каждая из которых по-своему обрабатывает ключи и сортирует по значению или по ключу:
sort()— сортировка по значению по возрастанию, переиндексирует ключи.rsort()— сортировка по значению по убыванию, переиндексирует ключи.arsort()— какasort(), но по убыванию, с сохранением ассоциаций ключей.ksort()/krsort()— сортировка по ключу по возрастанию / по убыванию.usort()/uasort()— сортировка с пользовательским callback-функцией сравнения.
Смотрите обзор Сортировка массивов для сравнения функций в таблице.
Заключение
Функция asort() — это полезный инструмент для сортировки массивов в PHP по значениям в порядке возрастания с сохранением связей ключ-значение. Она особенно полезна, когда ключи несут смысловую нагрузку — например, при сортировке ассоциативного массива с именами и баллами, идентификаторами и ценами и т. п. — там, где обычный sort() бы уничтожил ключи. Понимая синтаксис, типы сортировки и связанные функции, вы сможете выбирать правильный инструмент для каждой задачи упорядочивания и писать более чистый PHP-код.