首页 > 解决方案 > 在php中使用组合日期和时间对数组数据进行排序

问题描述

我有如下数组,如何结合日期和时间降序对数据进行排序?

$manifest = array(
    array("date"=>2019-02-21,"time"=>04:49:54,"desc"=>"arrived in indonesia"),
    array("date"=>2019-02-25,"time"=>04:02:21,"desc"=>"arrived in soppeng"),
    array("date"=>2019-02-22,"time"=>01:42:51,"desc"=>"arrived in makassar"),
    array("date"=>2019-02-22,"time"=>02:42:51,"desc"=>"arrived in makassar gateway"),
);

预期结果:

$manifest = array(
    array("date"=>2019-02-25,"time"=>04:02:21,"desc"=>"arrived in soppeng"),
    array("date"=>2019-02-22,"time"=>02:42:51,"desc"=>"arrived in makassar gateway"),
    array("date"=>2019-02-22,"time"=>01:42:51,"desc"=>"arrived in makassar"),
    array("date"=>2019-02-21,"time"=>04:49:54,"desc"=>"arrived in indonesia")
    );

感谢帮助

标签: phparrayssortingmultidimensional-array

解决方案


$arr = $manifest;

usort($arr, function($a, $b) {
  $ad = new DateTime($a['date'] ." ". $a['time']);
  $bd = new DateTime($b['date']." ". $a['time']);

  if ($ad == $bd) {
    return 0;
  }

  return $ad < $bd ? 1 : -1;
});

推荐阅读