W3docs

krsort()

Функция PHP krsort() сортирует массив по ключам в обратном порядке, сохраняя связь между ключами и значениями.

PHP-функция krsort(): сортировка массива по ключу в обратном порядке

Сортировка массивов в PHP — распространённая задача, особенно при работе с большими объёмами данных. Функция PHP krsort() — чрезвычайно полезный инструмент, который позволяет разработчикам сортировать массив по ключу в обратном порядке. Эта функция очень мощная и позволяет сэкономить много времени и усилий при сортировке массивов. В данной статье мы подробно рассмотрим функциональность функции krsort() и покажем, как использовать её в различных сценариях.

Что такое krsort()?

Функция krsort() — это встроенная функция PHP, которая сортирует массив в обратном порядке по его ключам, сохраняя при этом связь между каждым ключом и его значением. Название расшифровывается как key reverse sort (обратная сортировка по ключу). Она является аналогом ksort() для сортировки по убыванию, тогда как ksort() сортирует по ключу в порядке возрастания.

Поскольку сортировка выполняется по ключу (а не по значению), krsort() наиболее полезна для ассоциативных массивов или массивов с явными числовыми ключами — например, для сортировки записей с ключами по ID, году или приоритету так, чтобы наибольший ключ шёл первым.

Важно помнить два момента:

  • krsort() сортирует массив на месте и возвращает true в случае успеха (отсортированный массив не возвращается), поэтому функция вызывается непосредственно для переменной.
  • Она работает с ключами массива. Для сортировки по значению используйте arsort() (с сохранением ключей) или rsort() (с переиндексацией).

Синтаксис krsort()

Синтаксис функции krsort() выглядит следующим образом:

krsort(array &$array, int $flags = SORT_REGULAR): true

Здесь $array — это сортируемый массив (передаётся по ссылке, поэтому исходный массив изменяется), а $flags — необязательный параметр, управляющий способом сравнения ключей. Функция всегда возвращает true. Возможные значения $flags:

  • SORT_REGULAR: Значение по умолчанию. Функция сортирует элементы обычным образом, без изменения типов данных.
  • SORT_NUMERIC: Функция сортирует элементы числовым способом, то есть обрабатывает их как числа.
  • SORT_STRING: Функция сортирует элементы как строки.
  • SORT_LOCALE_STRING: Функция сортирует элементы как строки с учётом текущих настроек локали.
  • SORT_NATURAL: Функция сортирует элементы в естественном порядке, то есть как строки, но с учётом числовых значений.
  • SORT_FLAG_CASE: Этот флаг можно комбинировать с SORT_STRING или SORT_NATURAL для сортировки строк без учёта регистра.

Примеры использования krsort()

Теперь рассмотрим несколько примеров использования функции krsort().

Пример 1: Сортировка массива в обратном порядке по ключам

php— editable, runs on the server

Результат:

Array
(
    [d] => date
    [c] => cherry
    [b] => banana
    [a] => apple
)

В этом примере у нас есть массив из четырёх элементов. Мы сортируем массив в обратном порядке по ключам с помощью функции krsort(). Вывод показывает, что массив отсортирован по убыванию ключей.

Пример 2: Сортировка массива в обратном порядке по ключам, числовым способом

php— editable, runs on the server

Результат:

Array
(
    [4] => cherry
    [3] => date
    [2] => apple
    [1] => banana
)

Здесь ключи представлены числовыми строками. Сортировка с флагом SORT_NUMERIC сравнивает их как числа, поэтому массив упорядочивается от наибольшего ключа (4) до наименьшего (1). Обратите внимание, что PHP автоматически приводит строковые ключи, похожие на целые числа, например "1", к целым числам, поэтому SORT_REGULAR дал бы тот же результат — флаг SORT_NUMERIC важен, когда ключи могут иначе сравниваться как строки (где "10" идёт раньше "9").

Пример 3: Сортировка массива в обратном порядке по ключам без учёта регистра

php— editable, runs on the server

Результат:

Array
(
    [d] => date
    [C] => cherry
    [b] => banana
    [A] => apple
)

В этом примере у нас есть массив из четырёх элементов, где ключи являются строками, некоторые из них в верхнем регистре. Мы сортируем массив в обратном порядке по ключам без учёта регистра, используя функцию krsort() с флагами SORT_STRING и SORT_FLAG_CASE. Вывод показывает, что массив отсортирован по убыванию ключей без учёта регистра строк.

Связанные функции сортировки

PHP предлагает полное семейство функций для сортировки массивов. Выбор подходящей функции зависит от двух вопросов: сортировка выполняется по ключу или по значению, и нужен ли возрастающий или убывающий порядок?

ФункцияСортирует поПорядокСохраняет связь ключей
ksort()КлючуПо возрастаниюДа
krsort()КлючуПо убываниюДа
asort()ЗначениюПо возрастаниюДа
arsort()ЗначениюПо убываниюДа
sort()ЗначениюПо возрастаниюНет (переиндексация)
rsort()ЗначениюПо убываниюНет (переиндексация)
uksort()КлючуПользовательский callbackДа

Если логика сортировки слишком специфична для стандартных флагов — например, сортировка ключей по длине строки — воспользуйтесь uksort(), которая позволяет задать собственную функцию сравнения.

Заключение

Функция krsort() сортирует массив по ключам в убывающем порядке на месте, сохраняя при этом каждую пару ключ-значение. Она принимает необязательный аргумент с флагом сортировки, позволяющий сравнивать ключи числовым способом, как строки, в естественном порядке или без учёта регистра. Используйте krsort() всякий раз, когда у вас есть набор данных с ключами — идентификаторами, годами, приоритетами — который нужно представить от наибольшего ключа к наименьшему, а функции ksort() и arsort() применяйте, когда требуется другой порядок или сортировка по значению.

Practice

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