You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP如何对由单元素关联行组成的数组按行内值排序

PHP二维数组按子关联数组值升序排序解决方案

可用实现方案

方案一:使用usort实现(推荐,代码更简洁)

每个子数组仅包含一个键值对,直接取出对应值对比即可:

usort($a, function ($prev, $next) {
    return current($prev) - current($next);
});

执行后原变量$a会直接更新为排序后的结果,符合你的预期输出。

方案二:修正array_multisort的用法

你之前使用array_multisort时存在两个错误:一是将整个子数组存入排序参考列,二是使用了降序参数SORT_DESC,修正后代码如下:

$sortColumn = [];
foreach ($a as $key => $item) {
    // 仅提取子数组的值作为排序参考
    $sortColumn[$key] = current($item);
}
// 按参考列升序排序,同步更新原数组$a
array_multisort($sortColumn, SORT_ASC, $a);

原有方案失效的原因

  • uksort是用于按数组的键名排序,和你需要按子数组值排序的场景完全不匹配,且代码中用到的$res变量未定义,本身存在语法问题
  • 遍历array_keys构建新数组的逻辑没有任何排序操作,只是对原数组做了浅拷贝,不会改变元素顺序
  • 原有array_multisort方案的排序参考值选取错误,且排序方向和需求相反,因此无法得到正确结果

内容的提问来源于stack exchange,提问作者Teresa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 06:09:00