Как отсортировать массив по количеству элементов в его подмассивах?
Есть многомерный массив с одним уровнем вложенности
$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);
});