2013-05-28 47 views
0

爲什麼當我使用帶有額外條件的mysql_fetch_assoc的while循環時,$ row爲空,但當額外條件不存在時返回某些內容,這是否合乎邏輯?在具有額外條件的while循環中使用mysql_fetch_assoc

while ($row = mysql_fetch_assoc($result) 
     && $gen->getMailsSent() < 499) { 
    //blah blah 
} 

在上面的代碼,編譯器enteres循環,但$行是空

while ($row = mysql_fetch_assoc($result)) { 
    //blah blah 
} 

在這其中,編譯器仍然enteres循環,但隨後$行返回的東西,這對我沒有得到,也不合邏輯,有人可以解釋爲什麼會發生這種情況嗎?

+0

你能證明你的代碼的其餘部分?由此不能透露很多 – imulsion

回答

3
while (($row = mysql_fetch_assoc($result)) 
     && $gen->getMailsSent() < 499) { 
    //blah blah 
} 

試試這個。你的問題是優先 - 你居然告訴它

$row = (mysql_fetch_assoc($result) && $gen->getMailsSent() < 499) 

http://php.net/manual/en/language.operators.precedence.php

「& &」來「=」,在列表中,因此它被首先評估之前。

1

嘗試

while (($row = mysql_fetch_assoc($result)) 
     && $gen->getMailsSent() < 499) { 
    //blah blah 
} 

其實它不應該是空的,它應該是一個布爾值。

0
Use while loop like this: 

while (($row = mysql_fetch_assoc($result)) && ($gen->getMailsSent() < 499)) { 
    code goes here.. 
} 

希望這將有助於..