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

如何对PHP二维数组按custom_price字段进行升降序排序

按custom_price字段排序PHP二维数组

嘿,这个需求在PHP里其实很好实现,用usort()函数配合自定义比较逻辑就能轻松搞定升序和降序两种排序方式。先把你的原数组整理成更清晰的格式方便对照:

$products = [
    ['id' => 1204, 'custom_price' => 33.1500],
    ['id' => 1199, 'custom_price' => 16.83],
    ['id' => 1176, 'custom_price' => 16.83],
    ['id' => 1173, 'custom_price' => 11.73],
    ['id' => 1170, 'custom_price' => 22.5]
];

1. 升序排序(从低到高)

利用PHP7+引入的太空船运算符(<=>)可以非常简洁地实现排序,它会自动返回-1、0或1,完美适配usort()的要求:

// 升序排序(价格从低到高)
usort($products, function($a, $b) {
    return $a['custom_price'] <=> $b['custom_price'];
});

如果你的PHP版本低于7,也可以用传统的条件判断写法:

usort($products, function($a, $b) {
    if ($a['custom_price'] === $b['custom_price']) {
        return 0;
    }
    return $a['custom_price'] < $b['custom_price'] ? -1 : 1;
});

排序后,数组会按custom_price从11.73 → 16.83 → 16.83 → 22.5 → 33.15的顺序排列。

2. 降序排序(从高到低)

只需要把太空船运算符两侧的元素调换位置,就能实现反向排序:

// 降序排序(价格从高到低)
usort($products, function($a, $b) {
    return $b['custom_price'] <=> $a['custom_price'];
});

同样,低版本PHP的兼容写法:

usort($products, function($a, $b) {
    if ($a['custom_price'] === $b['custom_price']) {
        return 0;
    }
    return $a['custom_price'] > $b['custom_price'] ? -1 : 1;
});

排序后,数组会按custom_price从33.15 → 22.5 → 16.83 → 16.83 → 11.73的顺序排列。

小提示

如果你的custom_price字段是字符串类型(比如从数据库查询后未转换类型),记得先转成数值再比较,避免字符串排序的问题:

// 字符串转数值后排序(升序示例)
usort($products, function($a, $b) {
    return (float)$a['custom_price'] <=> (float)$b['custom_price'];
});

内容的提问来源于stack exchange,提问作者Narendra.vyas

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:55:37