【问题标题】:Sort 2-Dimensional PHP Array By Date按日期对二维 PHP 数组进行排序
【发布时间】:2013-08-14 18:58:31
【问题描述】:

假设我有一个 PHP 二维数组,格式如下:

$json =    [
          {"value": "New", "date": $date},
          {"value": "Open", "date": $date},
          {"value": "Close", "date": $date}
    ]

$array = json_decode($json);

如果日期是m/d/Y格式的日期时间,如何按从最早到最晚的日期对数组元素进行排序?

【问题讨论】:

  • usort() 带有一个回调函数,将 m/d/Y 字符串转换为时间戳,然后进行比较
  • 看看strtotime php.net/strtotime

标签: php arrays date sorting compare


【解决方案1】:

给定数据如下:

$json = '[ {"value": "New", "date": "06/21/2013"}, {"value": "Open", "date": "06/20/2013"}, {"value": "Close", "date": "06/22/2013"} ]';
$array = json_decode($json, TRUE);//array of objects, so set second parameter to TRUE
usort($array, function ($a, $b){
    return strtotime($a['date']) - strtotime($b['date']);
});
print_r($array);

返回一个数组数组。如果要将其保留为对象数组并将其重新编码为 JSON,则可以使用以下内容:

$array = json_decode($json);
$ord = array_map(function($a) {return $a->date;}, $array);
array_multisort($ord, $array);
$json = json_encode($array);

【讨论】:

  • @nshah - 不客气。如果你想要一个对象数组,我会更新。
猜你喜欢
  • 2013-11-30
  • 1970-01-01
  • 2013-08-17
  • 2014-03-02
  • 2016-10-31
  • 2020-01-18
  • 1970-01-01
相关资源
最近更新 更多