PHP 数学、循环变量和显示


PHP Math, Loop Variables, and Display

我目前遇到一个问题,我想显示一个变量的数量,该变量通过一个while循环来收集信息。while 循环将使用多个产品,但我只想显示一个最终结果。这是我所拥有的:

$amountoff = NULL;
$faceval = 20;
while($row = mysql_fetch_object($que)){
  $val = $row->amount;
  $price = $row->price;
  $quantity = $row->quantity;
  //if($faceval>0){
    if($faceval >= 0){
      if($faceval < 0){
        // Do Nothing
      } else {
        if($quantity > 1){
          if($quantity * $price < $faceval){
            $amountoff = $price * $quantity;
            $faceval = $faceval - $val;
          }
        } else {
          $amountoff = $price;
          $faceval = $faceval - $val;
        }
      }
    }
  //}
}
echo money_format('%(#10n', $amountoff);

我的问题:我的问题是为什么我的金额总是返回空白或 0.00?根据我正在测试的内容,我的$val = 15.00,$price = 7.50,$quantity = 1。我无法弄清楚数学是如何打破或返回 0.00/空白的。有什么想法或建议吗?我没有收到任何PHP错误或MySQL错误;我只是没有得到超过 0.00 的任何内容作为我的返回值。

编辑:我已经通过完全删除第一个if语句来修改if语句,但我仍然得到0.00的响应

if($faceval=0({ 应该是

if($faceval==0){

它从未进入那句话

编辑:只是为了清理你的代码:编辑:添加了一些调试

$amountoff = NULL;
$faceval = 20;
$set = false;
while($row = mysql_fetch_object($que) && $faceval>0){
   $val = $row->amount;
   $price = $row->price;
   $quantity = $row->quantity;
   $set = true;
   if($quantity > 1 && $quantity * $price < $faceval){
       $amountoff = $price * $quantity;
       if ($price==0) echo "PRICE IS ZERO<br>";
       if ($quantity==0) echo "QTY IS ZERO<br>";
       $faceval = $faceval - $val;
   } 
   else {
          $amountoff = $price;
          if ($price==0) echo "PRICE IS ZERO<br>";
          $faceval = $faceval - $val;
   }
}
if (!$set) echo "LOOP NEVER ENTERED<br>";
echo money_format('%(#10n', $amountoff);

你的 if 语句是嵌套的,这是错误的方法。你第二个嵌套如果永远不会被击中:

if($faceval==0){
   if($faceval >= 0){
     if($faceval < 0){

如果错误,你有你的第一个if($facevalue = 0) { //do something }

它永远不会进入 if 内部,因为顶部的面值定义为 20,请检查您的代码。

  if($faceval=0){
    if($faceval >= 0){
      if($faceval < 0){
        // Do Nothing
      } else {
        if($quantity > 1){
          if($quantity * $price < $faceval){
            $amountoff = $price * $quantity;
            $faceval = $faceval - $val;

您的嵌套 if 语句是错误的。

如果 $faceval == 0,您将通过第一个;只有在 $faceval < 0 时,您才会失败第二个,因此您尝试运行的代码将永远不会到达。

编辑

并且已经指出 - 初始if ($faceval = 0)需要==,否则您将重置该值,而不是检查它。