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

PHP中如何不使用二维数组,按字符串解析出的数字排序字符串数组

解决方案

直接使用PHP内置的自定义排序函数usort()即可实现需求,无需额外构造二维数组,直接在排序回调中调用你已实现的getPrice()函数提取价格做比较即可。

完整实现代码

$string='Rohlík 5Kč
CZK400 Knížka
Pivo 42,-
Houska 4 Kč';
$list = explode(PHP_EOL, $string);

// 你已实现的getPrice函数,此处仅为模拟示例
function getPrice($item) {
    preg_match('/\d+/', $item, $matches);
    return isset($matches[0]) ? (int)$matches[0] : 0;
}

// 核心排序逻辑:按价格升序排序(从小到大)
usort($list, function($a, $b) {
    $priceA = getPrice($a);
    $priceB = getPrice($b);
    // PHP7及以上版本可直接用太空船运算符简化比较逻辑
    return $priceA <=> $priceB;
    // PHP7以下版本替换为以下写法
    // if ($priceA == $priceB) return 0;
    // return $priceA > $priceB ? 1 : -1;
});

// 验证排序结果
print_r($list);

可选调整说明

  • 若需要保留原数组的键名,将usort()替换为uasort()即可,回调逻辑完全一致
  • 若需要按价格降序排序(从大到小),将回调中的$priceA <=> $priceB修改为$priceB <=> $priceA即可
  • 如果数组元素量级极大、且getPrice()计算逻辑复杂,可提前预计算所有元素的价格存入临时数组,再用array_multisort()排序减少重复计算,常规业务场景下上述写法已经足够简洁高效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 05:15:03