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

PHP中含不同货币键名的多维数组按PRICE排序方法求助

按PRICE字段排序PHP多维关联数组

没问题,我来帮你搞定这个排序问题!你遇到的情况是因为sort()函数只适用于索引数组,而且它会重置数组的键,而你的数组是关联数组(主键是货币名称),同时还是多维结构,所以得用更灵活的排序函数——uasort(),它可以保留原数组的键,并且允许你自定义排序规则。

解决方案代码

首先,先把你的示例数组整理成更易读的格式:

$cryptoPrices = [
    "MLN" => [
        "EUR" => [
            "FROMSYMBOL" => "MLN",
            "TOSYMBOL" => "EUR",
            "PRICE" => 0.01699
        ]
    ],
    "BTC" => [
        "EUR" => [
            "FROMSYMBOL" => "BTC",
            "TOSYMBOL" => "EUR",
            "PRICE" => 8769
        ]
    ],
    "LTC" => [
        "EUR" => [
            "FROMSYMBOL" => "LTC",
            "TOSYMBOL" => "EUR",
            "PRICE" => 141.47
        ]
    ]
];

接下来用uasort()实现按PRICE升序排序:

// 按PRICE升序排序
uasort($cryptoPrices, function($a, $b) {
    // 提取每个货币的EUR价格进行比较
    $priceA = $a['EUR']['PRICE'];
    $priceB = $b['EUR']['PRICE'];
    
    // 太空船运算符(PHP7+)直接返回比较结果,适配排序逻辑
    return $priceA <=> $priceB;
});

代码细节说明

  • uasort():这个函数的核心优势是排序后保留原数组的键名(也就是MLN、BTC这些货币标识),完全符合你的需求。
  • 回调函数中的$a和$b是数组中两两待比较的元素,我们通过$a['EUR']['PRICE']精准取出每个货币的价格值。
  • 太空船运算符<=>:PHP7及以上版本支持,它会根据两个值的大小关系返回-1、0或1,刚好满足排序函数对返回值的要求,代码简洁又可靠。

调整排序方向

如果需要降序排序(价格从高到低),只需要调换比较的顺序即可:

uasort($cryptoPrices, function($a, $b) {
    $priceA = $a['EUR']['PRICE'];
    $priceB = $b['EUR']['PRICE'];
    return $priceB <=> $priceA;
});

升序排序后的结果示例

执行升序排序后,数组结构会变成:

Array
(
    [MLN] => Array
        (
            [EUR] => Array
                (
                    [FROMSYMBOL] => MLN
                    [TOSYMBOL] => EUR
                    [PRICE] => 0.01699
                )

        )

    [LTC] => Array
        (
            [EUR] => Array
                (
                    [FROMSYMBOL] => LTC
                    [TOSYMBOL] => EUR
                    [PRICE] => 141.47
                )

        )

    [BTC] => Array
        (
            [EUR] => Array
                (
                    [FROMSYMBOL] => BTC
                    [TOSYMBOL] => EUR
                    [PRICE] => 8769
                )

        )

)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:29:44