通过动态二级键对多维数组的第一级进行排序

问题描述 投票:0回答:2

我必须按键对多维数组进行排序,并且我需要一些建议如何做到这一点。

我尝试使用

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

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

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

                    )

            )

    )

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

                    )

            )

    )

在这种情况下,按键是

20190529
20190516

php arrays sorting multidimensional-array
2个回答
3
投票

工作演示

您可以使用 array_multisort 来实现您的要求。

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

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

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


2
投票

我这样修改了我的数组:

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");

它对我有用:)但现在我必须再次修改我的数组才能返回第一眼。

© www.soinside.com 2019 - 2024. All rights reserved.