遍历PDO查询结果集时获取商品数量总和的实现方法
如何用array_sum计算PDO查询中商品数量总和?
没问题,要实现这个需求其实很简单,我们只需要稍微调整现有代码,让它同时收集商品的数量数值,再用array_sum()计算总和即可。
问题分析
你的现有脚本只将拼接好的商品字符串(比如 t-shirt(1))存入了$items数组,数量是嵌在字符串里的,没法直接用array_sum()计算。所以核心是要单独获取每个商品的数量值,存入一个专门的数组后再求和。
修改后的完整代码
$allItems = ""; $items = array(); $quantities = array(); // 新增:用于存储每个商品的数量数值 // 修改SQL查询,同时取出quantity字段 $select_stmt = $db->prepare("SELECT CONCAT(product, ' (', quantity,')') AS ItemQty, quantity, price FROM database"); $select_stmt->execute(); while ($row = $select_stmt->fetch(PDO::FETCH_ASSOC)) { $items[] = $row["ItemQty"]; $quantities[] = $row["quantity"]; // 新增:将当前商品的数量存入数组 } $allItems = implode(", ", $items); $totalQuantity = array_sum($quantities); // 计算所有商品的数量总和 // 可选:输出结果验证 echo "商品列表:{$allItems}<br>"; echo "总数量:{$totalQuantity}";
关键说明
- 新增数量数组:创建
$quantities数组专门存储纯数字的数量值,避免和拼接后的字符串混淆。 - 调整SQL查询:在SELECT语句中加入
quantity字段,这样能直接从数据库拿到数字类型的数量,不需要额外从字符串中提取。 - 循环收集数量:每次遍历查询结果时,同步将数量值存入
$quantities数组。 - 用array_sum求和:
array_sum()会自动遍历数组并累加所有数值,一步得到总数量。
这种方法既保留了你原来生成商品列表字符串的逻辑,又高效实现了数量求和,代码可读性也很强。
内容的提问来源于stack exchange,提问作者Michaël Thönnissen
相关产品推荐
相关产品推荐

