如何使用PHP(而不是MySQL)按时间顺序提取数据?
我有一个数组,里面有带有各种"键"的对象,其中包括时间和事件。
这是我所拥有的经过编辑的var_dump
:
[0] => object {
["time"] => "24/06/2015 - 12:30 PM"
["event"] => "Another event"
}
[1] => object {
["time"] => "24/06/2015 - 08:45 AM"
["event"] => "Event"
}
[2] => object {
["time"] => "25/06/2015 - 09:50 AM"
["event"] => "Yet another event"
}
我希望输出类似于:
2015年6月24日:
事件
另一个事件
2015年6月25日:
另一个事件
提前谢谢。
您可以将usort标准php函数与以下自定义函数一起使用:
function sortbytobjtime($a, $b){
$adate = date_create_from_format('d/m/Y - h:i a', $a->time);
$bdate = date_create_from_format('d/m/Y - h:i a', $b->time);
if ( $adate == $bdate ) return 0;
return ( $adate < $bdate) ? -1 : 1;
}
usort($arr, 'sortbytobjtime');
$arr是一个数组,如您的问题中所述,它填充了对象。请注意,此解决方案需要版本>=5.3.0的PHP 5,才能使用DateTime类。
一种方法是重新排列数组,使键为时间戳值:
$newArr = [];
foreach($objArr as $obj) {
$newArr[ strtotime( $obj->time ) ] = $obj;
}
然后,您可以使用ksort()或krsort()。