2016-02-21 21 views
1

爲什麼我在這裏得到未定義的偏移量?我能夠成功地在另一個頁面上做類似的循環。爲什麼我會收到通知:未定義偏移量:1,我該如何糾正它?

我正在線路上的錯誤,它說

$subTotal = $subTotal + $totalPrice[$i]; 

while循環中。

 $totalPrice = []; 
     $i = 0; 

     while($result = mysqli_fetch_assoc($runquery)) 
     { 
      $id = $value; 
      $title = $result['gme_title']; 
      $price = $result['gme_price']; 
      $quantity = $_POST['quantity'][$id]; 

      echo "<tr>"; 
       echo "<td>$title</td>"; 
       echo "<td>$id</td>";   
       echo "<td>$quantity</td>"; 
       echo "<td>$price</td>"; 
      echo "</tr>"; 

      $totalPrice[$i] = $quantity * $price; 
      $i++; 
      } 
      $subTotal = 0; 
      while($i > 0) 
      { 
       $subTotal = $subTotal + $totalPrice[$i]; 
       $i--; 
      } 
      echo "<tr>"; 
       echo "<td colspan=\"3\" class=\"align\">Total:</td>"; 
       echo "<td>$subTotal</td>"; 
      echo "</tr>"; 
+0

你的問題是由在while()循環結尾處執行'$ i ++;'引起的。在你的最後一個循環中,你的'$ i'的值將比'$ totalPrice'最後一個鍵大1。你需要在下一個循環中使用'$ i - ;'之前,你需要'while($ i> = 0)',因爲你正在跳過'$ totalPrice [0]'。 – Sean

回答

2

必須只有一個項目在查詢這讓你與你的$ totalPrice數組的數組中只有一個條目(爲0的指數)返回。當它試圖查找$ totalPrice [1]時,它告訴你它不存在。

您可以跳過第二個while循環並使用array_sum函數。

$subtotal = array_sum($totalPrice); 

你也可以跳過所有的$我一般的東西,這是沒有必要的。

+0

我不知道array_sum,非常感謝 – gurpalrattu

0

在第一個循環結束時,i指向最後一個數組元素。

只是在嘗試訪問第二個循環中的元素之前執行i--

由於代碼的立場,你實際上不需要再次瀏覽陣列,因爲array_sum會爲你做這項工作。

相關問題