PHP如何按数组元素的hash键num的取值对二维数组进行排序?
解决方案
1. PHP 7.4及以上版本(最简洁写法)
直接使用usort结合箭头函数+太空船运算符即可一行完成排序:
// 直接对原数组$arr按子元素的num字段升序排序 usort($arr, fn($item1, $item2) => $item1['num'] <=> $item2['num']);
排序后$arr的内容就是你需要的[$b, $c, $a]。
2. 兼容更低PHP版本的写法
如果运行环境不支持箭头函数,用匿名函数替代即可:
usort($arr, function($item1, $item2) { return $item1['num'] <=> $item2['num']; });
补充说明
- 上述写法中的
<=>是PHP 7引入的太空船比较运算符,会自动对两个值做比较,小于返回-1,等于返回0,大于返回1,完全符合自定义排序回调的返回要求。 - 如果需要降序排序,只需要把回调里的
$item1和$item2交换位置即可。 - 如果需要保留原数组的键名不重置,把
usort换成uasort即可。
内容的提问来源于stack exchange,提问作者whitebear
相关产品推荐
相关产品推荐

