【问题标题】:Sort array by custom date time按自定义日期时间排序数组
【发布时间】:2016-03-25 13:39:37
【问题描述】:

我有下一个数组:

Array ( 
[15709] => stdClass Object ( 
  [pid] => 15709 
  [channel_ID] => 51 
  [date] => 2016-03-21 00:30:00 
  [program_info] => Х/ф "Стелла" ) 
[15710] => stdClass Object ( 
  [pid] => 15710 [channel_ID] => 51 
  [date] => 2016-03-21 02:20:00 
  [program_info] => Х/ф "Часы доблести" ) 
[15711] => stdClass Object ( 
  [pid] => 15711 
  [channel_ID] => 51 
  [date] => 2016-03-21 06:15:00 
  [program_info] => Фильм-концерт "Хичкок. Концерт в магазине" 
) )

我需要按字段[date]对他进行排序,应该首先从指定时间05:00:00开始的元素,结果必须是这样的:

Array ( 
    [15711] => stdClass Object ( 
      [pid] => 15711 
      [channel_ID] => 51 
      [date] => 2016-03-21 06:15:00 
      [program_info] => Фильм-концерт "Хичкок. Концерт в магазине" )
    [15709] => stdClass Object ( 
      [pid] => 15709 
      [channel_ID] => 51 
      [date] => 2016-03-21 00:30:00 
      [program_info] => Х/ф "Стелла")
    [15710] => stdClass Object ( 
      [pid] => 15710 [channel_ID] => 51 
      [date] => 2016-03-21 02:20:00 
      [program_info] => Х/ф "Часы доблести"
    ) )

【问题讨论】:

  • 实际上第一个数组是按日期排序的,第二个不是。还是我错过了什么?
  • stackoverflow.com/questions/17439905/php-array-multisort 看看这个问题。你的问题是重复的。
  • 你的问题没有意义。您的预期结果未按日期排序。
  • 结果必须按自定义日期时间排序
  • @CodeGodie,我需要从 05:00 到 04:59 进行排序,如下所示:array('05:00','06:00','07:00','12:00','14:00','16:00','22:00','23:00','02:00','04:00')

标签: php arrays sorting object


【解决方案1】:

试试这样的:

uasort($myarray, function($a, $b) {
    if ($a['date'] == $b['date']) {
        return 0;
    }
    return ($a['date'] < $b['date']) ? -1 : 1;
})

【讨论】:

  • 我需要从 05:00 到 04:59 进行排序,如下所示:array('05:00','06:00','07:00','12:00','14:00','16:00','22:00','23:00','02:00','04:00')
  • 可以在函数中炸开日期,只比较时间
猜你喜欢
  • 1970-01-01
  • 2015-11-19
  • 2017-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多