【问题标题】:Get sum of values in Foreach loop在 Foreach 循环中获取值的总和
【发布时间】:2018-09-26 14:19:50
【问题描述】:

我有一个 foreach 循环,它从具有动态行的表中添加所有行(按上一页的顺序为您想要的每个新产品添加行 - 有时可能是 3 个产品,有时可能是 23 个产品)创建pdf 采购订单(使用 mpdf)。我对每行显示(产品 x 数量 = 总)成本的行项目没有任何问题。我的问题是将这些总计纳入采购订单底部的单个总成本。

创建的 PDF 示例:

Product 1     $2 x 3 = $6
Product 2     $4 x 2 = $8
Product 3     $6 x 1 = $6

一切正常。这是 foreach 循环的代码。

   <?php

foreach ($product as $a => $b) {

    $prod_cost1[$a] = (("$qty[$a]") * ("$prod_cost[$a]"));

    echo "
        <tr>
            <td>$product[$a] &nbsp;</td>
            <td>$qty[$a] &nbsp;</td>
            <td>$prod_cost1[$a] &nbsp;</td>
        </tr>";
}

?>

我只是需要汇总所有 $prod_cost1 并能够在页面的某处显示它。感谢您的帮助!

【问题讨论】:

  • array_sum($prod_cost1)

标签: php


【解决方案1】:
  • 只需在循环开始前再创建一个变量并在循环内递增。
  • 在处理数字时使用正确的类型转换是一个好习惯(尤其是在 PHP 这样的弱类型语言中)。因此,我将产品成本类型转换为float。

您可以使用以下代码:

// Initialize the total sum varaible
$total_sum = 0;

foreach($product as $a => $b) { 

    $prod_cost1[$a] = (("$qty[$a]") * ("$prod_cost[$a]"));

    // update the total sum (typecasting the product cost to float)
    $total_sum += (float)$prod_cost1[$a];

    echo"
         <tr>
         <td>$product[$a] &nbsp;</td>
         <td>$qty[$a] &nbsp;</td>
         <td>$prod_cost1[$a] &nbsp;</td>
         </tr>";
}

// access it
echo $total_sum;

【讨论】:

  • @Psam 乐于助人:)
【解决方案2】:
$total = 0;
foreach($product as $a => $b) { 
    $prod_cost1[$a] = (("$qty[$a]") * ("$prod_cost[$a]"));

    $total += $prod_cost1[$a];

    echo"<tr>
        <td>$product[$a] &nbsp;</td>
        <td>$qty[$a] &nbsp;</td>
        <td>$prod_cost1[$a] &nbsp;</td>
    </tr>";
} 

echo "Total: {$total}";

【讨论】:

  • 不是我。但可能缺乏解释!另外,你的和我的一样 :-)
  • @MadhurBhaiya 我可以说同样的话 :) 它经常发生在第一个到达那里的比赛中。
  • @Barry 有 1 分钟的间隔。无论如何,我同意你可能没有复制我的答案。
  • @Barry 我赞成,因为你的答案仍然是有效的。
  • 谢谢@MadhurBhaiya我之前也有同样的事情......其他答案与我的12票同时出现并接受......我什么都没有(至少没有反对票)......都是因为我花了链接到文档、格式等的额外时间......这就是我想我没有在这里解释的原因
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-21
  • 2013-05-08
  • 1970-01-01
相关资源
最近更新 更多