我如何重新安排对象的这样一个数组:排序对象数组按日期场
[495] => stdClass Object
(
[date] => 2009-10-31 18:24:09
...
)
[582] => stdClass Object
(
[date] => 2010-2-11 12:01:42
...
)
...
由date
关键,第一最古老的?
我如何重新安排对象的这样一个数组:排序对象数组按日期场
[495] => stdClass Object
(
[date] => 2009-10-31 18:24:09
...
)
[582] => stdClass Object
(
[date] => 2010-2-11 12:01:42
...
)
...
由date
关键,第一最古老的?
usort($array, function($a, $b) {
return strtotime($a['date']) - strtotime($b['date']);
});
或者,如果你不具备PHP 5.3:
function cb($a, $b) {
return strtotime($a['date']) - strtotime($b['date']);
}
usort($array, 'cb');
我想对arnaud576875
的答案扩大。我遇到了同样的问题,但是使用了DateTime对象。这就是我能够完成同样的事情。
usort($array, function($a, $b) {
return $a['date']->format('U') - $b['date']->format('U');
});
由于原来的问题是关于排序stdClass的数组()的对象,这里如果$ a和$ b是对象,其将工作代码:
usort($array, function($a, $b) {
return strtotime($a->date) - strtotime($b->date);
});
或者,如果你没有PHP 5.3:
function cb($a, $b) {
return strtotime($a->date) - strtotime($b->date);
}
usort($array, 'cb');
这应该是正确的答案。 – devXen
看起来不错,我建议你到OP做的日期/时间在数据库中的排序,和/或格式化的值一起返回一个普通的UNIX时间戳,为的strtotime()有可以考虑的开销,并且会重复排序xpensive。 –
嗯..但它不保留旧的数字键.. – Nadine
用'uasort'替换'usort'然后 – arnaud576875