猿问

在 php 中使用 foreach 求和值

我正在制作一个电子商务网站。我必须在哪里显示购物车中所有产品的总量。但是当我尝试获取所有产品的总量时,它只显示最后一个产品的价格这是代码


$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>

但它显示列表中最后一行的数量


慕哥9229398
浏览 134回答 2
2回答

神不在的星期二

您不需要此代码。首先你不需要if($result > 0)。你的变量$result是一个数组,而不是一个数字,所以你不能将它与一个数字进行比较。intval如果您在算术上下文中使用结果,则意义不大。将一个变量分配给另一个变量而不对它做任何有用的事情是没有意义的,所以$price = $row['price'];也要删除。然后剩下的是一个带有算术加法的简单循环。$result = $query->fetchAll(PDO::FETCH_ASSOC);$total = 0;&nbsp;foreach($result as $row){&nbsp; &nbsp; $total += $row['price'];}这不是最明智的想法,因为此类操作应该在 SQL 而不是 PHP 中完成。有什么理由必须用 PHP 来做吗?如果不是,则简单地聚合 SQL 中的值。SELECT SUM(price) AS total FROM salesOrders WHERE saleId = ?然后在 PDO 中只获取一个列。$total = $query->fetchColumn();

白衣非少年

我认为if($result&nbsp;>&nbsp;0){&nbsp;...&nbsp;}应该if(count($result)&nbsp;>&nbsp;0){&nbsp;...&nbsp;}
随时随地看视频慕课网APP
我要回答