本文详解如何在 php 中遍历多个查询返回的一维数组(每个数组含若干价格项),将所有数值统一累加得到最终总金额,重点解决因变量作用域错误导致的累加失效问题。
在实际开发中,常需对多组商品价格进行分批查询与汇总计算。例如:根据订单中的多个 item_id 分别调用 priceTotal() 获取各商品在不同租期下的价格组合(如按小时/天计费),最终需将所有价格项相加得出订单总金额(含运费)。但初学者易犯一个关键错误——在循环内部重复初始化累加变量,导致前序结果被覆盖。
如原始代码所示:
foreach($weeklyGross as $row){
// ... 其他逻辑
$totalPrice = 0; // ❌ 错误!每次循环都重置为 0
foreach ($items as $var){
$addItems = $chart->priceTotal($conn, $var, $hours);
foreach($addItems as $k){
$totalPrice += $k; // 此时只累加当前 $row 的结果
}
}
$totalPrice += $delivery_cost; // 仅加上本次的运费
}
该写法使 $totalPrice 在每次外层循环开始时被清零,最终仅保留最后一次循环的计算结果,无法实现全局累加。