为了账号安全,请及时绑定邮箱和手机立即绑定

在 php 中使用 foreach 求和值

在 php 中使用 foreach 求和值

PHP
慕哥9229398 2023-04-28 14:38:49
我正在制作一个电子商务网站。我必须在哪里显示购物车中所有产品的总量。但是当我尝试获取所有产品的总量时,它只显示最后一个产品的价格这是代码$result = $query->fetchAll(PDO::FETCH_ASSOC);$total = 0; if($result > 0){       foreach($result as $row){         $price = $row['price'];        $total += intval($price);    }因为价格在数据库中是 varchar,所以我使用 intval() 方法转换为 int 并 echo $total <td class="pro-subtotal"><span><?php echo $total; ?></span></td>但它显示列表中最后一行的数量
查看完整描述

2 回答

?
神不在的星期二

TA贡献1963条经验 获得超6个赞

您不需要此代码。首先你不需要if($result > 0)。你的变量$result是一个数组,而不是一个数字,所以你不能将它与一个数字进行比较。intval如果您在算术上下文中使用结果,则意义不大。将一个变量分配给另一个变量而不对它做任何有用的事情是没有意义的,所以$price = $row['price'];也要删除。


然后剩下的是一个带有算术加法的简单循环。


$result = $query->fetchAll(PDO::FETCH_ASSOC);

$total = 0; 

foreach($result as $row){

    $total += $row['price'];

}

这不是最明智的想法,因为此类操作应该在 SQL 而不是 PHP 中完成。有什么理由必须用 PHP 来做吗?如果不是,则简单地聚合 SQL 中的值。


SELECT SUM(price) AS total FROM salesOrders WHERE saleId = ?

然后在 PDO 中只获取一个列。


$total = $query->fetchColumn();


查看完整回答
反对 回复 2023-04-28
?
白衣非少年

TA贡献1155条经验 获得超0个赞

我认为

if($result > 0){ ... }

应该

if(count($result) > 0){ ... }


查看完整回答
反对 回复 2023-04-28
  • 2 回答
  • 0 关注
  • 133 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信