W3docs

Как сортировать массивы в 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:

  1. Сортировка массива строк с помощью asort():

Примеры asort()

php— editable, runs on the server
  1. Сортировка массива целых чисел с помощью asort():

Сортировка массива целых чисел с помощью asort()

php— editable, runs on the server
  1. Сортировка ассоциативного массива с помощью asort():

PHP: сортировка ассоциативного массива с помощью asort()

php— editable, runs on the server

Распространённые ошибки

  • Используйте 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-код.

Практика

Практика
Что делает функция asort() в PHP?
Что делает функция asort() в PHP?
Was this page helpful?