Как отсортировать массив по количеству элементов в его подмассивах?

Есть многомерный массив с одним уровнем вложенности

$arr = [
    [1,2,], //2 элемента
    [1,4,5], //3
    [1,], //1
    [1,4,6,9], //4
];

Как можно отсортировать в обратном порядке массивы первого уровня по количеству элементов в этих массивах. В итоге должно получиться вот так. Индексы не важны.

$arr = [
    [1,4,6,9], //4
    [1,4,5], //3
    [1,2,], //2
    [1,], //1
];

Как это можно сделать?

Пробовал вот так, но это не то, что нужно.

usort($arr, function($key, $value) {
    return count($value);
});

print_r($arr);

Ответы (1 шт):

Автор решения: Blacknife

usort вторым аргументом принимает callback функцию, которая должна возвращать целое, которое меньше, равно или больше нуля, если первый аргумент является соответственно меньшим, равным или большим, чем второй. $a и $b - это по порядку сравниваемые элементы массива, а не key и value как в вашем примере.

$arr = [
    [1,2,], //2 элемента
    [1,4,5], //3
    [1,], //1
    [1,4,6,9], //4
];

usort($arr, static function ($a, $b) {
    return count($a) < count($b);
});
→ Ссылка