在循环中添加多个值

时间:2014-06-11 14:55:55

标签: php

作为一个例子,我在表单中有四个输入文本框。我正在尝试计算每种商品类型的费用(quantity * cost)并计算所有商品的总数。我已将公式放在while循环中,以计算表单中找到的所有可能项目的成本。我没有收到任何结果以换取总费用? Demo

PHP

if ($_SERVER['REQUEST_METHOD'] == 'POST'){
      $discount = $_POST['discount'];
      $i = 1;
      while(isset($_POST['quantity'.$i])){
          $quantity = $_POST['quantity'.$i];
          $cost = $_POST['cost'.$i];
          $total = $quantity * $cost;
          $i++;
      }

}

html

<div id="contact-area">
  <form action="" method="post">
    <label>Quantity:</label> <input type="text" name="quantity1" id="quantity1"> <label>Cost:</label><input type="text" name="cost1" id="cost1"><br /><br />
    <label>Quantity:</label> <input type="text" name="quantity2" id="quantity2"> <label>Cost:</label><input type="text" name="cost2" id="cost2"><br /><br />
  <br /><br />
  <input type="submit" value="Submit" >
  </form>

<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST'){
  echo"<p>Amount Due: $". $total ."</p>";
}
?>
</div>

5 个答案:

答案 0 :(得分:3)

您重新分配$total而非添加,因此最终总数将来自最后一项。它应该是:

$total += $quantity * $cost;
       ^

答案 1 :(得分:1)

每个循环都会覆盖您的$total变量。

应该是:

$total += ($quantity * $cost);

答案 2 :(得分:1)

您需要添加

$total = 0;
在while循环和循环更改之前

$total = $quantity * $cost;

$total += $quantity * $cost;

答案 3 :(得分:1)

试试这个:

if ($_SERVER['REQUEST_METHOD'] == 'POST'){
  $discount = $_POST['discount'];
  $i = 1;
  $total = 0;
  while(isset($_POST['quantity'.$i])){
      $quantity = $_POST['quantity'.$i];
      $cost = $_POST['cost'.$i];
      $total += $quantity * $cost;
      $i++;
  }

}

答案 4 :(得分:0)

像这样重写代码可以解决问题:

if ($_SERVER['REQUEST_METHOD'] == 'POST'){
      $discount = $_POST['discount'];
      $i = 1;
      $total = 0;
      while(isset($_POST['quantity'.$i])){
          $total += $_POST['quantity'.$i] * $_POST['cost'.$i];
          $i++;
      }

}

这是改变的:

  • $total = 0;循环之前添加while,以确保无论如何分配变量。
  • 删除$quantity = $_POST['quantity'.$i];&amp; $cost = $_POST['cost'.$i];因为这些是可以直接访问的多余的值重复。
  • $total =更改为$total +=,以便$total实际累积在变量中。