【问题标题】:PHP - How to sort multidimensional array by Key?PHP - 如何按键对多维数组进行排序?
【发布时间】:2019-05-29 11:22:18
【问题描述】:

我必须按键对多维数组进行排序,我需要一些建议。

我尝试使用ksort() 和其他 php 内置函数,但它们都没有帮助我。

这是我的数组,我想按键排序:

Array
(
[0] => Array
    (
        [20190529] => Array
            (
                [30] => Array
                    (
                        [17] => Array
                            (
                                [3846] => 0
                            )

                    )

            )

    )

[1] => Array
    (
        [20190516] => Array
            (
                [31] => Array
                    (
                        [17] => Array
                            (
                                [512] => 0
                            )

                    )

            )

    )

)

在这种情况下,键是2019052920190516

【问题讨论】:

    标签: php arrays sorting multidimensional-array


    【解决方案1】:

    我这样修改了我的数组:

    Array
    (
    [0] => Array
        (
            [DATE] => 20190503
            [DEAL] => 30
            [IBLOCK] => 18
            [AMOUNT] => 2500
            [PAYED] => 0
        )
    
    [1] => Array
        (
            [DATE] => 20190516
            [DEAL] => 31
            [IBLOCK] => 17
            [AMOUNT] => 512
            [PAYED] => 0
        )
    )
    

    然后我用usort():

    function cmp($a, $b) {
        return $a['DATE'] - $b['DATE'];
    }
    
    usort($mydata, "cmp");
    

    它对我有用 :) 但现在我必须再次修改我的数组以返回第一个外观。

    【讨论】:

    • 这个解决方案也帮助了我。谢谢
    【解决方案2】:

    Working demo.

    您可以使用 array_multisort 来满足您的要求。

    $keys = [];
    foreach($arr as $k => $item){
        $keys[] = key($item);
    }
    array_multisort($keys, SORT_NATURAL, $arr);
    

    array_multisort — 对多个或多维数组进行排序

    SORT_NATURAL - 使用“自然排序”将项目作为字符串进行比较,例如 natsort()

    【讨论】:

    • 谢谢,我用我的方法做到了,但你的解决方案对我很有帮助:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 2012-06-15
    • 2012-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多