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);
});