PHP多维数组按子数组值排序技术实现问询
PHP多维数组按子数组数值降序排序
刚好碰到过类似的数组结构排序需求,给你分享一个简洁高效的解决方案,用PHP内置函数配合自定义逻辑就能搞定:
完整实现代码
// 你的原始多维数组 $originalArray = [ ['test' => 0], ['test1' => 1296], ['test2' => 1046], ['test3' => 1171], ['test4' => 857], ['test5' => 1051], ['test6' => 929], ['test7' => 986] ]; // 执行自定义排序 usort($originalArray, function($itemA, $itemB) { // 提取每个子数组的唯一数值(因每个子数组仅含一个键值对,用reset()直接取值) $valA = reset($itemA); $valB = reset($itemB); // 用太空船运算符实现降序:大数值排前面 return $valB <=> $valA; }); // 输出排序后的结果 print_r($originalArray);
关键逻辑说明
usort()函数:会直接修改原数组进行排序(如果需要保留原数组,可先复制一份再操作:$sortedArray = $originalArray;),自定义回调函数决定排序规则。reset()的妙用:不用关心每个子数组的键名是什么,因为每个子数组只有一个元素,reset()能快速取出对应的数值,避免了繁琐的键名判断。- 太空船运算符
<=>:PHP7及以上版本支持的便捷比较符,对比两个值后返回-1、0或1,这里用$valB <=> $valA实现降序,若要升序只需换成$valA <=> $valB。
运行这段代码后,就能得到你想要的结果:排序后的数组开头就是Array ( [0] => Array ( [test1] => 1296 ) [1] => Array ( [test3] => 1171 ) ... )。
内容的提问来源于stack exchange,提问作者mardav




