【问题标题】:sum amounts obtained in foreach [duplicate]在 foreach 中获得的总金额 [重复]
【发布时间】:2017-11-30 17:46:00
【问题描述】:

我正在做类似于购物车的事情,在数据库中我有价格和数量,然后我得到价格乘以数量的数量,我如何将所有乘法的结果相加?

<?php
foreach ($products as $product) {
    echo $product['price'].'<br>';
    echo $product['quantity'].'<br>';
    $subtotal = $product['price']*$product['quantity'];
    echo $subtotal.'<br>';

    echo $total; //??????
}
?>

假设我有 5 个产品,那么我有 5 个小计,如何将它们相加得到总数?

【问题讨论】:

  • $subtotal += $product['price']*$product['quantity'];

标签: php mysqli


【解决方案1】:

您希望总计在所有循环中累积,因此您在循环之外定义它并每次都添加到它:

$total = 0;
foreach ($products as $product) {
    $subtotal = $product['price']*$product['quantity'];
    $total += $subtotal;
}

echo $total;

【讨论】:

    【解决方案2】:
    <?php
    $total=0;
    foreach ($products as $product) {
        echo $product['price'].'<br>';
        echo $product['quantity'].'<br>';
        $subtotal = $product['price']*$product['quantity'];
        echo $subtotal.'<br>';
    
        $total=$total+$subtotal; //add here echo after loop ends
    }
    echo $total;
    ?>
    

    【讨论】:

      【解决方案3】:

      如果您想避免循环,您可以使用一些数组函数来完成所有操作。
      我使用array_column 来获取价格和数量以分隔数组。
      然后我使用array_map 将这些值相乘,并使用array_sum 将相乘后的值相加。

      $price = array_column($products, "price");
      $quantity = array_column($products, "quantity");
      
      $total = array_sum(array_map(function($x, $y) { return $x * $y; },
                     $price, $quantity));
      Echo $total;
      

      或者,如果您不介意代码或多或少不可读,那么这一行也可以这样做。

      $total = array_sum(array_map(function($x, $y) { return $x * $y; },
                     array_column($products, "price"), array_column($products, "quantity")));
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-07-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-09-19
        • 2021-04-29
        • 2015-11-24
        • 2020-08-01
        相关资源
        最近更新 更多