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

PHP多维数组双规则排序:0值项后置+label升序

修正组合排序函数以实现预期效果

我来帮你修正这个组合排序函数,完全满足你「将countValue为0的行移至数组末尾,并按label值升序排序」的需求:

修正后的排序函数

public function sortOptionsByCountsAndByName($a, $b) {
    // 处理其中一个countValue为0的情况
    if ($a['countValue'] == 0 && $b['countValue'] != 0) {
        // a是0,b不是0,a应该排在后面,返回1
        return 1;
    }
    if ($b['countValue'] == 0 && $a['countValue'] != 0) {
        // b是0,a不是0,b应该排在后面,返回-1
        return -1;
    }
    
    // 两者都是0或者都不是0,按label升序排序
    return $this->sortOptionsByName($a, $b);
}

逻辑说明

  1. 优先处理0值行:通过两个条件判断,确保所有countValue不为0的行都排在0值行前面:
    • 当a是0而b不是时,让a往后排(返回1表示a应该在b之后)
    • 当b是0而a不是时,让b往后排(返回-1表示a应该在b之前)
  2. 统一按label排序:当两者同是0或同非0时,直接复用你已有的sortOptionsByName函数完成label的升序排序(注意必须return这个函数的返回值,之前的代码就是漏掉了return导致排序无效)

使用方式

调用PHP的usort函数来应用这个排序规则:

usort($array, [$this, 'sortOptionsByCountsAndByName']);

这样处理后,你的数组就会完全符合预期的排序结果啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:38:04