0

現在、情報を収集するために while ループを実行する変数から金額を表示したいという問題があります。while ループでは複数の製品が使用されますが、表示される最終結果は 1 つだけです。これが私が持っているものです:

$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/blank として戻ってくるのかわかりません。何か考えや提案はありますか?PHP エラーや MySQL エラーは発生しません。戻り値として 0.00 を超える値が得られません。

編集:最初の if ステートメントを完全に削除して if ステートメントを変更しましたが、まだ 0.00 の応答が返されます

4

4 に答える 4

3

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);
于 2013-05-07T20:26:47.417 に答える
0

if ステートメントがネストされていますが、これは間違った方法です。ヒットしない場合は、2 番目にネストされます。

if($faceval==0){
   if($faceval >= 0){
     if($faceval < 0){
于 2013-05-07T20:27:19.380 に答える
0

間違っている場合は、最初のものがありますif($facevalue = 0) { //do something }

上部の facevalue が 20 として定義されているため、if 内には決して入りません。コードを確認してください。

于 2013-05-07T20:28:04.443 に答える
-1
  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にのみ 2 番目に失敗するため、実行しようとしているコードに到達することはありません。

編集

また、指摘されています-初期値は であるif ($faceval = 0)必要があり==ます。そうしないと、値をチェックするのではなく、値をリセットすることになります。

于 2013-05-07T20:27:27.323 に答える