2013-01-05 179 views
0

我在很多例子中看到了以下while循環條件,甚至我已經在很多時候使用它。我知道它是如何工作的以及如何使用它。但是,因爲我在這裏編碼的條​​件沒有任何意義。一個雖然循環條件在PHP

當我看到代碼時,條件就像它總是如此。就像while(1)。因爲* mysql_fetch_assoc()*,傳遞的數據一直傳遞。所以情況是一個常數。

while($arr = mysql_fetch_assoc($data)) 
{ 
     //other code 
} 

現在,我在哪裏錯了?

+0

'$ data'包含您通常無法看到的內部數據,例如「最後一行被取回爲#5」。該數據由'mysql_fetch_assoc'用來返回下一行或NULL。所以不,條件不是恆定的。 – DCoder

回答

4

mysql_fetch_assoc的每次調用從結果集中獲取下一個行。如果沒有行,則返回false,並且循環終止。

$data是一個resource數據類型,並且可能會保持關於哪一行最後被提取的狀態。
這並不罕見,即使數組有一個指向當前元素的內部指針,它可以使用某些數組函數進行操作。

+0

謝謝,這就是我所困惑的。這僅僅是一個函數技巧。 –

0

PHP website,mysql_fetch_assoc「如果沒有更多的行返回一個字符串的關聯數組對應於提取行,或FALSE。

因此,只要還有可用的行,mysql_fetch_assoc會返回行內容的關聯數組,將指針遞增到下一行,並執行循環。

當沒有更多的行mysql_fetch_assoc將返回FALSE和循環將中斷。

另請注意,自PHP 5.5.5起,此功能將被棄用。

+0

*「,並將數組指針增加到下一行」* ...'$ data'不是一個數組。或者你有更多關於如何實現MySQL資源鏈接的信息? –

+0

我的不好 - 已刪除'數組' – PassKit