简体   繁体   English

按键数组多维排序

[英]order by key array multidimensional

I have this multidimensional array, and i want to order each array by 'fecha'(i mean 2017-02-20, then 2017-02-21, then 2017-02-22 and finally 2017-02-23). 我有这个多维数组,我想用'fecha'命令每个数组(我的意思是2017-02-20,然后是2017-02-21,然后是2017-02-22,最后是2017-02-23)。 I have read a lot of answers, but they only work with bidimensional arrays. 我已经阅读了很多答案,但它们只适用于二维数组。 I have tried with unsort and array_multisort, even with ksort bue i couldn´t obtain the desire result. 我尝试过unsort和array_multisort,即使使用kso​​rt bue我也无法获得所需的结果。

Array
    (
        [0.10] => Array
            (
                [0] => Array
                    (
                        [fecha] => 2017-02-21
                        [tarifa] => 743.80
                        [percent] => 0.10
                    )

                [1] => Array
                    (
                        [fecha] => 2017-02-22
                        [tarifa] => 743.80
                        [percent] => 0.10
                    )

                [2] => Array
                    (
                        [fecha] => 2017-02-20
                        [tarifa] => 743.80
                        [percent] => 0
                    )

                [3] => Array
                    (
                        [fecha] => 2017-02-23
                        [tarifa] => 743.80
                        [percent] => 0
                    )

            )

        [0.15] => Array
            (
                [0] => Array
                    (
                        [fecha] => 2017-02-21
                        [tarifa] => 743.80
                        [percent] => 0.15
                    )

                [1] => Array
                    (
                        [fecha] => 2017-02-22
                        [tarifa] => 743.80
                        [percent] => 0.15
                    )

                [2] => Array
                    (
                        [fecha] => 2017-02-20
                        [tarifa] => 743.80
                        [percent] => 0
                    )

                [3] => Array
                    (
                        [fecha] => 2017-02-23
                        [tarifa] => 743.80
                        [percent] => 0
                    )

            )

    )

you can use usort with strtotime to order by date. 您可以使用usortstrtotime按日期排序。

ASC Order by date (fecha): ASC按日期排序(fecha):

foreach ($yourArray as $key => $subarray) {
    usort($subarray, function($a, $b) {
            return strtotime($a['fecha']) - strtotime($b['fecha']);
        });
    $yourArray[$key] = $subarray;
 }

print_r($yourArray);

DESC order by date (fecha): DESC按日期排序(fecha):

foreach ($yourArray as $key => $subarray) {
    usort($subarray, function($a, $b) {
            return strtotime($b['fecha']) - strtotime($a['fecha']);
        });
    $yourArray[$key] = $subarray;
 }

print_r($yourArray);

Try: 尝试:

    foreach ($yourArray as $key => &$subarray) {
        usort($subarray, function($a, $b) {
            return $a['fecha'] <= $b['fecha'];
        });
    }
    print_r($yourArray); //now it's sorted 

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

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