如何在 PHP 中按内部数组的长度对二维数组进行排序


How to sort a two-dimensional array by length of inner arrays in PHP?

有人可以帮助我吗?我正在尝试按内部数组的长度(降序(对二维数组进行排序。

此数组:

Array
    (
      [0] => Array
        (
          [0] => "a"
        )
      [1] => Array
        (
          [0] => "a"
          [1] => "b"
          [2] => "c"
        )
      [2] => Array
        (
          [0] => "a"
          [1] => "b"
        )
    )

应该导致这个排序数组:

Array
    (
      [0] => Array
        (
          [0] => "a"
          [1] => "b"
          [2] => "c"
        )
      [1] => Array
        (
          [0] => "a"
          [1] => "b"
        )
      [2] => Array
        (
          [0] => "a"
        )
    )

你有什么提示吗?

// Comparison function
function cmp($a, $b) {
    $ca = count($a);
    $cb = count($b);
    if($ca == $cb)
        return 0;
    return ($ca < $cb ) ? -1 : 1;
}
// Sort the array
uasort($array, 'cmp');

是的,使用 usort 按元素的count()排序。

<?php
header("Content-type: text/plain");
$array = array(
    array(
        "item1" => "key1",
        "item2" => "key2",
    ),
    array(
        "item1" => "key1",
        "item2" => "key2",
        "item3" => "key3"
    ),
    array(
        "item1" => "key1",
    )
);
usort($array, function($el1, $el2) {
    if (count($el1) === count($el2)) {
        return 0;
    }
    return count($el1) < count($el2) ? 1 : -1;
});
print_r($array);