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

如何在两个多维数组中匹配取值并获取对应产品的销售额

实现方案

直接通过Sales数组的一级键名匹配产品名称即可,不需要嵌套循环或复杂数组函数,该方式时间复杂度为O(1),是当前场景下效率最高的实现。

基础遍历实现

// $products 为你的产品数组,$sales 为销售额数组
foreach ($products as $item) {
    $productName = $item['product'];
    // 先判断对应产品的销售额是否存在,不存在可返回默认值0避免报错
    $currentSales = isset($sales[$productName]) ? $sales[$productName]['sales'] : 0;
    // 此处编写你的业务逻辑,比如打印、存储数据等
    echo "产品:{$productName} 当月销售额:{$currentSales}\n";
}

封装为函数的实现

如果需要多次调用可以封装为独立函数,建议将销售额数组作为参数传入,避免使用全局变量:

/**
 * 根据产品名获取对应销售额
 * @param string $productName 产品名称
 * @param array $salesArray 销售额数组
 * @return int 销售额,不存在则返回0
 */
function getSalesByProduct(string $productName, array $salesArray): int
{
    return $salesArray[$productName]['sales'] ?? 0;
}

// 遍历调用示例
foreach ($products as $item) {
    $sales = getSalesByProduct($item['product'], $sales);
    // 业务逻辑处理
}

原方案问题说明

你之前使用嵌套循环遍历Sales数组的方式时间复杂度为O(n*m)(n为产品数组长度、m为销售额数组长度),数据量越大性能损耗越高,完全没有必要。你当前的场景中销售额数组的一级键正好是需要匹配的产品名称,直接通过键访问是最优解。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 06:06:02