如何在PHP中按date_time字段的最新日期对数组降序排序
PHP数组按date_time字段降序排序问题解答
原函数问题说明
你写的比较函数本身可以实现按日期排序,只是排序方向不符合需求:
- 当前返回
$t1 - $t2是升序排序,更早的日期会排在前面,和你要求的「最新日期在前」正好相反。
正确实现方式
方法1:修改比较函数返回值(兼容全PHP版本)
仅需要调换两个时间戳的计算顺序即可:
function compare_date($a, $b) { $t1 = strtotime($a['date_time']); $t2 = strtotime($b['date_time']); return $t2 - $t1; } usort($array1, 'compare_date');
方法2:PHP 7+ 简化写法(性能更高)
因为你使用的date_time是Y-m-d H:i:s格式,该格式字符串的字典序和时间顺序完全一致,不需要转时间戳即可直接比较,PHP7及以上版本可以用太空船运算符简化代码:
usort($array1, function($a, $b) { return $b['date_time'] <=> $a['date_time']; });
排序后效果
修改后数组会按照你要求的顺序排列:
- 第一位:Item 2(对应时间2021-08-15 10:44:49)
- 第二位:Item 3(对应时间2021-08-12 01:45:43)
- 第三位:Item 1(对应时间2021-08-03 11:42:31)
内容的提问来源于stack exchange,提问作者Malca
相关产品推荐
相关产品推荐

