本文讲解如何在 php 中遍历多个查询返回的一维数组(每个数组含若干价格值),并将其全部元素累加得到最终总金额,重点解决因变量作用域错误导致的累加失效问题。
在实际开发中,我们常需根据订单项动态计算总价:例如,每个商品支持按小时或按天计费,且一个订单可能包含多个商品(ID 以逗号分隔),而每个商品又可能因租用时长不同产生多个价格组合(如 hour_rate + day_rate × 剩余天数)。此时,priceTotal() 方法会为每个商品 ID 返回一个价格数组(如 [420, 200]),而主逻辑需将所有商品返回的所有价格值统一累加,再叠加运费等附加费用。
但常见错误是将累加变量 $totalPrice 错误地声明在循环内部,导致每次迭代都重置为 0,仅保留最后一次循环的结果。正确做法是:将 $totalPrice = 0 提升至最外层作用域,在遍历所有订单项及其中每个商品前初始化一次。
以下是修正后的完整逻辑示例: