До этого вы уже знакомились с сортировкой массива с помощью встроенных операторов сравнения. Например, функция sort() сортирует массив чисел, используя встроенные механизмы сравнения PHP.
Если же требуется задать собственный порядок сортировки, применяется функция usort()

Синтаксис

  • $array - сортируемый массив.
  • $callback - пользовательская функция сравнения.
Функция возвращает true при успешной сортировке и false при ошибке.

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

Функция сравнения принимает два элемента массива и возвращает:
  • 0, если элементы равны;
  • отрицательное число, если первый элемент должен идти раньше второго;
  • положительное число, если после.

Сортировка массива чисел

Результат:
Для сортировки по убыванию поменяйте местами возвращаемые значения:
В PHP 7 и новее удобно использовать оператор "космический корабль" <=>:
Для краткости можно использовать стрелочные функции (PHP 7.4+):

Сортировка массива строк по длине

Результат:

Сортировка массива объектов

Создадим класс Person и отсортируем массив по возрасту:
Для сортировки по имени используйте сравнение $x->name <=> $y->name.

Использование статического метода класса в качестве callback

Здесь первым элементом массива указывается имя класса, вторым имя статического метода.

Итог

Функция usort() позволяет гибко сортировать массивы по любому пользовательскому критерию с помощью собственной функции сравнения.