按子数组中的元素个数对数组的数组进行排序


sort array of arrays by number of elements in sub array

我有一个数组的数组。我想对包含数组进行排序,以便数组中元素最多的子数组排在前面。

的例子:

$my_array = array(
  array(0=>”a", 1=>”b”, 4=>”c"),
  array(3=>”z"),
  array(0=>”p”, 2=>”k"),
);

预期的结果:包含3个元素的子数组在第一个排序,包含1个元素的子数组在最后一个排序。

$my_array = array(
  array(0=>”a", 1=>”b”, 4=>”c"),
  array(0=>”p”, 2=>”k"),
  array(3=>”z"),
);

只使用usort()count()的方法。

<?php
$my_array = array(
  array(0=>"a", 1=>"b", 4=>"c"),
  array(3=>"z"),
  array(0=>"p", 2=>"k"),
);
usort($my_array, function($a, $b) {
    if (count($a) == count($b)) {
        return 0;
    }
    return (count($a) < count($b)) ? 1 : -1;
});
print_r($my_array);

例子小提琴

这个的一个变体可能会奏效。usort

function compare($a, $b) {
  if (count($a) == count($b)) return 0;
  return (count($a) < count($b)) ? -1 : 1;
}
usort($my_array, 'compare');