无法按内部项目对多维数组排序

时间:2019-09-18 12:41:09

标签: php arrays sorting

我想按降序排列的数组(count())对数组进行排序(即多数项排在首位)

这是我的数组,

Array
(
    [Itm01] => Array
        (
            [0] => Array
                (
                    [id] => 238
                    [col1] => 7908
                    [col2] => 7181
                )

            [1] => Array
                (
                    [id] => 17024
                    [col1] => 1039
                    [col2] => 7181
                )

            [2] => Array
                (
                    [id] => 
                    [col1] => 1039
                    [col2] => 7181
                )

        )

    [Itm02] => Array
        (
            [0] => Array
                (
                    [id] => 260
                    [col1] => 1039
                    [col2] => 8964
                )

            [2] => Array
                (
                    [id] => 238
                    [col1] => 9149
                    [col2] => 8964
                )

            [3] => Array
                (
                    [id] => 238
                    [col1] => 0
                    [col2] => 8964
                )

            [4] => Array
                (
                    [id] => 238
                    [col1] => 7333
                    [col2] => 8964
                )

            [5] => Array
                (
                    [id] => 238
                    [col1] => 9049
                    [col2] => 8964
                )

            [6] => Array
                (
                    [id] => 238
                    [col1] => 7333
                    [col2] => 8964
                )

            [7] => Array
                (
                    [id] => 238
                    [col1] => 9049
                    [col2] => 8964
                )

            [8] => Array
                (
                    [id] => 238
                    [col1] => 8217
                    [col2] => 8964
                )

            [9] => Array
                (
                    [id] => 238
                    [col1] => 7516
                    [col2] => 8964
                )

            [10] => Array
                (
                    [id] => 82
                    [col1] => 1039
                    [col2] => 8964
                )

        )

    [Itm03] => Array
        (
            [0] => Array
                (
                    [id] => 238
                    [col1] => 7908
                    [col2] => 7276
                )

            [1] => Array
                (
                    [id] => 238
                    [col1] => 9049
                    [col2] => 7276
                )

        )

    [Itm04] => Array
        (
            [0] => Array
                (
                    [id] => 82
                    [col1] => 8217
                    [col2] => 8217
                )

        )

)

但是我想要第一个索引为'Itm02'的项目,因为它有更多项目。老实说,我想要与此thread相同的东西。但是当我这样做时,

$warehouses = uksort($warehouses, function($a, $b) { return count($b) - count($a); });

但是它返回一个空数组。如果有人可以帮助,那就太好了。

2 个答案:

答案 0 :(得分:2)

uksort()返回一个布尔值。

尝试以下操作:

 var items = db.table.Where(p => p.id!=null).GroupBy(p => p.id)
                                .Select(grp => grp.First().id)
                                .ToList();

答案 1 :(得分:1)

  

array_multisort():对多维或多维数组进行排序

array_multisort(array_map('count', $a), SORT_DESC, $a);

工作示例:https://3v4l.org/EATkk