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

PHP使用usort按布尔字段active和数字字段age实现多字段排序

实现方案

我们可以通过usort的自定义回调实现两级排序:第一级优先将active为true的元素前置,第二级相同active状态的元素按age数值升序排列,具体代码如下:

PHP 7+ 版本(推荐,使用太空船运算符简化判断)

// 替换$yourArray为你实际的数组变量
usort($yourArray, function ($a, $b) {
    // 第一优先级:active字段排序,true在前
    $activeCompare = $b['active'] <=> $a['active'];
    if ($activeCompare !== 0) {
        return $activeCompare;
    }
    // 第二优先级:age字段升序
    return $a['age'] <=> $b['age'];
});

兼容PHP 5版本

// 替换$yourArray为你实际的数组变量
usort($yourArray, function ($a, $b) {
    // 先判断active优先级
    if ($a['active'] && !$b['active']) {
        return -1;
    }
    if (!$a['active'] && $b['active']) {
        return 1;
    }
    // active状态相同,比较age
    if ($a['age'] === $b['age']) {
        return 0;
    }
    return $a['age'] < $b['age'] ? -1 : 1;
});

执行上述代码后,数组就会输出符合要求的排序结果。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 17:12:00