在PHP中按时间排序数组的问题 [英] questions on sort array by time in php

查看:61
本文介绍了在PHP中按时间排序数组的问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

---数组$ points ----

Array
    (
        [0] => Array
            (
                [0] => 2011-10-02 05:30:00
                [1] => 20
            )

        [1] => Array
            (
                [0] => 2011-10-04 09:30:00
                [1] => 12
            )

        [2] => Array
            (
                [0] => 2011-10-01 13:30:00
                [1] => 25
            )

        [3] => Array
            (
                [0] => 2011-10-03 02:30:00
                [1] => 31
            )

    )

我上面有一个数组,想按时间对该数组排序.然后,我使用如下代码对结果进行排序,结果是正确的.但是,如果我将代码time[$key] = $val[0]更改为$time = $val[0],则结果是错误的.

I have an array at above and would like to sort this array by time. Then I used the code as following to sort and result is correct. However, if I changed the code time[$key] = $val[0] to $time = $val[0], the result is wrong.

有人可以向我解释吗?非常感谢!

Is there anyone can explain this to me? Many thanks!

foreach($points as $key=>$val){

        $time[$key] = $val[0];

        array_multisort($time, SORT_ASC, $points);
    }

推荐答案

array_multisort一次排序多个数组.但是,它适用于列数组,因此需要foreach循环才能获得一列时间.建立此列表后,您可以执行多重排序.根据文档中的此示例,根据$times中的索引对$points数组进行排序.

array_multisort sorts more than one array at once. However, it works on an array of columns, so the foreach loop is needed to get a column of the times. After building up this list, you can then perform the multisort. The $points array is ordered according to the indices in $times, as per this example in the docs.

但是,您无需在foreach内部执行排序,因为这意味着排序发生了4次(在您的示例中).它只需要发生一次:

However, you don't need to perform the sort inside the foreach, as that means the sort happens 4 times (in your example). It only needs to happen once:

foreach ($points as $key => $val) {
    $time[$key] = $val[0];
}

array_multisort($time, SORT_ASC, $points);

这篇关于在PHP中按时间排序数组的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆