You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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

火山引擎 最新活动