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

PHP实现二维数组按列排序:负数优先,再按绝对值降序

PHP数组自定义排序实现指定规则

原数组

$originalArray = [
    ['array-5', 0],
    ['array-4', 0],
    ['array-1', -1],
    ['array-3', 2],
    ['array-2', 3]
];

排序要求

  • 负数排在正数之前
  • 符号相同时,按数值的绝对值从大到小排序
  • 数值绝对值相同时(如两个0),按元素第一个字符串字段升序排列

实现代码

usort($originalArray, function($a, $b) {
    $valA = $a[1];
    $valB = $b[1];
    
    // 负数优先排在非负数前
    $isNegA = $valA < 0;
    $isNegB = $valB < 0;
    if ($isNegA && !$isNegB) return -1;
    if (!$isNegA && $isNegB) return 1;
    
    // 符号相同,按绝对值降序排序
    $absA = abs($valA);
    $absB = abs($valB);
    $absCmp = $absB <=> $absA;
    if ($absCmp !== 0) return $absCmp;
    
    // 绝对值相同,按第一个字符串字段升序排列
    return strcmp($a[0], $b[0]);
});

// 输出结果
print_r($originalArray);

运行结果

[
    ['array-1', -1],
    ['array-2', 3],
    ['array-3', 2],
    ['array-4', 0],
    ['array-5', 0]
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 05:03:07