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

Laravel:对比两个产品数组,校验API产品价格是否更高

嘿,我来帮你搞定这个Laravel里的产品对比逻辑!咱们一步步来实现:

第一步:获取并整理两个产品数组

首先先拿到你提交的产品数组和API返回的产品数组,这里假设两个数组的结构都是包含name(产品名)和price(价格)字段的二维数组——如果你的实际结构不一样,记得对应调整键名就行:

// 获取表单提交的「我的产品数组」
$myProducts = Input::get('product');

// 替换成你实际的API调用逻辑,这里用示例数组演示
$apiProducts = [
    ['name' => '无线耳机', 'price' => 299],
    ['name' => '机械键盘', 'price' => 399],
    ['name' => '蓝牙音箱', 'price' => 199]
];
第二步:优化API数组的查找效率

为了避免每次循环都遍历整个API数组(数据量大的时候会很慢),咱们把API数组转成以产品名为键的关联数组,这样查找同名产品就是O(1)的速度:

// 用Laravel集合快速转成键值对数组
$apiProductsByName = collect($apiProducts)->keyBy('name')->toArray();
第三步:遍历对比逻辑

接下来遍历你的产品数组,逐个检查是否存在同名API产品,再对比价格:

foreach ($myProducts as $myProduct) {
    // 先判断API里有没有同名产品
    if (isset($apiProductsByName[$myProduct['name']])) {
        $apiProduct = $apiProductsByName[$myProduct['name']];
        
        // 注意:如果价格是字符串类型,一定要转成数值再比较!
        $myPrice = (float)$myProduct['price'];
        $apiPrice = (float)$apiProduct['price'];
        
        if ($apiPrice > $myPrice) {
            // 这里写你要执行的逻辑,比如标记产品、记录日志、添加提示信息等
            // 示例:把满足条件的产品存到一个数组里
            $higherPriceProducts[] = [
                'name' => $myProduct['name'],
                'my_price' => $myPrice,
                'api_price' => $apiPrice
            ];
        }
    }
}

// 可以打印看看结果
dd($higherPriceProducts);
额外小技巧:用集合简化逻辑

如果你喜欢Laravel集合的链式操作,也可以用filter方法直接筛选出所有满足条件的产品:

$higherPriceProducts = collect($myProducts)->filter(function ($myProduct) use ($apiProductsByName) {
    if (!isset($apiProductsByName[$myProduct['name']])) {
        return false;
    }
    $apiProduct = $apiProductsByName[$myProduct['name']];
    return (float)$apiProduct['price'] > (float)$myProduct['price'];
})->toArray();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:52:44