Glossary overview

usort()

usort() — это сортировка пользовательской функцией сравнения.

Ты сам решаешь, как сравнивать элементы: по числам, строкам, длине, дате, вложенному значению, чему угодно.

Синтаксис

usort(array &$array, callable $callback): bool

$array — массив, который нужно отсортировать (переиндексируется!).

$callback — функция, которая принимает два элемента и возвращает:

  • -1 если первый элемент < второго
  • 0 если равны
  • 1 если первый > второго

Простой пример

$numbers = [3, 7, 2, 5];

usort($numbers, function($a, $b) {
    return $a <=> $b; // Spaceship оператор
});

print_r($numbers);
// [2, 3, 5, 7]

Читать про spaceship operator.

Пример с ассоциативными массивами:

$users = [
    ['name' => 'Alice', 'age' => 32],
    ['name' => 'Bob', 'age' => 25],
    ['name' => 'Charlie', 'age' => 40],
];

usort($users, function ($a, $b) {
    return $a['age'] <=> $b['age']; // сортируем по возрасту
});

print_r($users);

Важно: usort() сбрасывает ключи

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

Пример с сортировкой строк по длине:

$strings = ['banana', 'kiwi', 'apple', 'watermelon'];

usort($strings, function($a, $b) {
    return strlen($a) <=> strlen($b);
});