0

为什么当我使用带有额外条件的 mysql_fetch_assoc 应用 while 循环时 $row 为空,但是当额外条件不存在时,返回一些东西,这是合乎逻辑的吗?

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

上面代码中,编译器进入循环,但是$row为空

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

在这一个中,编译器仍然进入循环,但随后 $row 返回一些东西,这对我来说我不明白而且不合逻辑,有人可以解释为什么会发生这种情况吗?

4

3 回答 3

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

“&&”在列表中出现在“=”之前,所以它首先被评估。

于 2013-05-28T08:07:13.407 回答
1

尝试

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

实际上它不应该是空的,它应该是一个布尔值。

于 2013-05-28T08:07:23.097 回答
0
Use while loop like this:

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

希望这会有所帮助..

于 2013-05-28T08:09:28.687 回答