繁体   English   中英

如何在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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM