如何从PHP日期数组中获取并排序最新的2个日期?
嘿,你已经把排序的核心逻辑搞定了,要拿到最新的两个日期其实只需要在现有基础上做一点点调整就行,我给你整理了完整的实现方案:
实现步骤
- 把排序改成降序:原来的函数是按日期从旧到新排序,我们反过来让最新的日期排在数组最前面;
- 截取前2个元素:排序后直接取数组的前两个,就是最新的两条数据;
- 可选:调整两个元素的顺序:如果需要把这两条按从旧到新排列,再做一次升序排序即可。
完整代码示例
<?php $data = array( array( "title" => "Another title", "date" => "Fri, 17 Jun 2011 08:55:57 +0200" ), array( "title" => "Another title", "date" => "Fri, 17 Jun 2014 08:55:57 +0200" ), array( "title" => "My title", "date" => "Mon, 18 Jun 2012 09:55:57 +0200" ) ); // 用匿名函数做降序排序,最新日期排最前 usort($data, function($a, $b) { return strtotime($b["date"]) - strtotime($a["date"]); }); // 截取前2个元素,得到最新的两条数据 $latestTwoEntries = array_slice($data, 0, 2); // (可选)如果需要把这两条按「旧到新」排序,取消下面注释 // usort($latestTwoEntries, function($a, $b) { // return strtotime($a["date"]) - strtotime($b["date"]); // }); // 输出结果验证 print_r($latestTwoEntries); ?>
代码说明
- 用
usort配合匿名函数做降序排序,省去了单独定义函数的麻烦,逻辑更紧凑; array_slice是PHP里专门用来截取数组片段的函数,array_slice(数组, 起始索引, 截取数量)的写法很直观;- 注释里的可选排序,如果你需要展示的时候从旧到新排列最新的两条,取消注释就能生效。
内容的提问来源于stack exchange,提问作者Lá Dối Trá
相关产品推荐
相关产品推荐

