如何在PHP中按last_modified列值对二维数组进行排序
解决方案
你可以使用PHP内置的usort()(不保留原数组键名)或者uasort()(保留原数组键名)函数实现自定义排序,根据last_modified的时间戳值排序即可。
1. 排序代码(PHP 7.0+ 推荐写法,用太空船运算符)
按修改时间升序(旧内容在前,新内容在后)
usort($arr, function($a, $b) { return $a['last_modified'] <=> $b['last_modified']; });
按修改时间降序(新内容在前,旧内容在后)
把上面的$a和$b互换位置即可:
usort($arr, function($a, $b) { return $b['last_modified'] <=> $a['last_modified']; });
2. 兼容低版本PHP的写法
如果你的PHP版本低于7.0不支持太空船运算符,用普通数值比较即可:
usort($arr, function($a, $b) { // 你的last_modified本身是时间戳格式字符串,也可以直接转int比较:(int)$a['last_modified'] - (int)$b['last_modified'] return strtotime($a['last_modified']) - strtotime($b['last_modified']); // 要改成降序就反过来写 $b减$a });
3. 完整使用示例
排序完成后你原来的输出代码不需要修改,直接沿用即可:
// 第一步先执行排序 usort($arr, function($a, $b) { return $b['last_modified'] <=> $a['last_modified']; }); // 原有输出逻辑不变 $position = 0; while ($position < count($arr)) { echo $arr[$position]["name"] . " - "; echo date('d/m/Y - H:i', $arr[$position]["last_modified"]) . "<br>\n"; $position = $position + 1; }
内容的提问来源于stack exchange,提问作者melk
相关产品推荐
相关产品推荐

