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

如何在PHP中按count字段降序排序多维数组?

如何对PHP多维数组按count字段降序排序?

别担心,你选usort()其实完全找对方向了!问题大概率出在回调函数的逻辑上,我给你写个能直接跑的解决方案,再一步步给你讲清楚:

首先先把你的原数组转成标准PHP格式:

$array = [
    ['count' => 9, 'slug' => 'concediat-reangajat'],
    ['count' => 7, 'slug' => 'salarii-5togo'],
    ['count' => 10, 'slug' => 'piata-fortei-munca'],
    ['count' => 3, 'slug' => 'productivitate-angajati'],
    ['count' => 1, 'slug' => 'stocare-date'],
    ['count' => 4, 'slug' => 'infrastructura-leadership'],
    ['count' => 2, 'slug' => 'airbnb-uber'],
    ['count' => 5, 'slug' => 'salarii-productivitate'],
    ['count' => 2, 'slug' => 'ceo-resurse-umane'],
    ['count' => 3, 'slug' => 'hr-ceo'],
    ['count' => 1, 'slug' => 'burnout-tratament'],
    ['count' => 1, 'slug' => 'angajati-vanzarea-afacerii'],
    ['count' => 1, 'slug' => 'job-linkedin'],
    ['count' => 1, 'slug' => 'primul-faliment'],
    ['count' => 3, 'slug' => 'salariu-mic'],
    ['count' => 1, 'slug' => 'varsta-programatori'],
];

方案一:PHP7+ 简洁写法(推荐)

用PHP7引入的太空船运算符<=>,一行搞定比较逻辑,降序排序只需要把两个比较对象反过来:

// 按count字段降序排序
usort($array, function($a, $b) {
    return $b['count'] <=> $a['count'];
});

// 打印验证结果
echo '<pre>';
print_r($array);
echo '</pre>';

方案二:兼容PHP5.x的写法

如果你还在用PHP5版本,就用传统的if-else判断返回值:

usort($array, function($a, $b) {
    if ($a['count'] == $b['count']) {
        return 0; // 两个count相等时保持原顺序
    }
    // 降序:b的count更大就返回-1,让b排在前面
    return ($a['count'] < $b['count']) ? 1 : -1;
});

// 打印结果
echo '<pre>';
print_r($array);
echo '</pre>';

为什么之前可能失败?

  • 你可能搞反了比较顺序:升序是$a['count'] <=> $b['count'],降序必须反过来用$b在前
  • 或者没正确访问子数组的count键,比如拼写错误(PHP数组键是区分大小写的)
  • ksort()是用来对数组的键排序的,你的需求是对值(子数组的count)排序,所以用它肯定没用啦

运行上面的代码后,数组就会按count从大到小排列,第一个元素就是count=10的那个,完美符合你的需求~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:17:37