douyuan6490 2014-04-06 21:41
浏览 88
已采纳

如何按PHP中的时间值对多维数组进行排序?

I'm doing a school project and I have a multi-dimensional array having start_time and end_time of courses.

I already sorted the array by day, but I also want to sort the array by time. Such that the lowest start_time is the first element of the array.

This is how my array is at the moment:

Array ( 
       [0] => Array ( 
                     [courseID] => comp345
                     [lectureID] => ss
                     [day] => monday
                     [stime] => 18:20 
                     [etime] => 20:30 
                     [term] => winter 
                     [year] => 2014 
              )
       [1] => Array ( 
                     [courseID] => comp275 
                     [lectureID] => gg 
                     [day] => monday 
                     [stime] => 12:15 
                     [etime] => 15:16 
                     [term] => winter 
                     [year] => 2014
              )
)

I was wondering if there are any pre-defined functions to do that or if i need to create a new specific function for this task .

I can access the values of the start_time like this :

foreach ($array as $element)
{
  $start_time = (substr($element['stime'], 0, 5));
}

This will return the time in this format : 08:20

It works the same way as normal numbers when comparing such as :

08:20 < 10:15 = true

08:20 > 10:15 = false

  • 写回答

2条回答 默认 最新

  • doucao8982 2014-04-06 21:48
    关注

    PHP >= 5.5.0:

    array_multisort(array_map('strtotime', array_column($array, 'stime')), SORT_ASC, $array);
    

    PHP < 5.5.0:

    foreach ($array as $k => $v) {
      $stime[$k] = strtotime($v['stime']);
    }
    array_multisort($stime, SORT_ASC, $array);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 对象代号: , 表单: 不存在!
  • ¥15 WebSocket的问题
  • ¥15 WebSocket的问题
  • ¥15 centos上启动kylin后网页报错404
  • ¥20 使用hackrf进行信号收发时接收到的信号幅度太小
  • ¥15 WebSocket的问题
  • ¥15 BDSBAS-B1C和B1C信号有什么不同
  • ¥15 在半圆平面内随机生成点坐标
  • ¥15 系统容量变化的几种多址方式TDMA, CDMA,FDMA,OFDMA 对比,应该给的是一个曲线 图,随着系统容量的增加,几种多址方式性能的对比 图,MATLAB程序仿真折线图
  • ¥15 用visual Studio 写c ++只运行上一个旧代码的运行结果是怎么回事