PHP:如何仅输出商品总价累加循环后的最终结果值
问题产生原因
你把累计金额的输出代码写在了foreach循环内部,每遍历一条商品就执行一次打印,自然会把每一步的中间累加值都渲染到页面上,逐行展示累计数,和你要的只输出最终总额的需求不匹配。
修正思路
- 累加
$total的逻辑必须留在循环内,毕竟要遍历完所有商品才能算出最终的总金额 - 把最终总金额的打印代码挪到循环结束后的位置,这样等循环跑完所有商品,拿到的
$total就是最终的累加值,只会被输出一次
修正后的参考代码
<?php $total = 0; foreach($products as $product){ // 计算单条商品的交易小计 $total_item = $product['quantity'] * $product['sale_price']; // 累加总金额,这部分保留在循环内执行 $total += $total_item; ?> <!-- 循环内渲染每条商品对应的表格行,这里不要打印累计总金额 --> <tr> <td><?php echo formatcurrency($total_item); ?></td> </tr> <?php } ?> <!-- 循环全部执行完后,在合计位置打印最终的总金额 --> <tr> <td>总金额:<?php echo formatcurrency($total); ?></td> </tr>
核心逻辑就是不要把需要单次输出的最终值,放在会反复执行的循环块内部。只要输出动作在循环外面,拿到的就是最后一次循环累加完成的数值,不会再把中间的计算过程值展示出来。
内容的提问来源于stack exchange,提问作者Alex Silva
相关产品推荐
相关产品推荐

