虽然循环不能像预期的那样使用变量

时间:2012-01-28 23:43:14

标签: php while-loop

当我删除&& $f<4时,以下代码正常工作,但如果将其删除,则无效。

PHP:

$titles=array();
$f=0;
while ($row=mysql_fetch_assoc($query) && $f<4){  //this line doesn't work
        $titles[]=$row['questiontitle'];
            echo "<div class='questionPreview'>$titles[$f]</div>";
            $f++;
        }

3 个答案:

答案 0 :(得分:5)

如果我正确地解释你,我认为你有一个优先问题。试试这个:

while (($row=mysql_fetch_assoc($query)) && ($f<4)){

答案 1 :(得分:2)

=has lower precedence than&&。这意味着首先评估&&运算符。

这意味着您的代码实际上如下所示:

while ($row = (mysql_fetch_assoc($query) && $f<4)){  //this line doesn't work

因此,换句话说,执行MySQL查询和比较,如果它们都是真的,则将$row设置为true;否则,将其设置为false

您需要使用括号来确保完成正确的操作:

while (($row=mysql_fetch_assoc($query)) && ($f<4)){

答案 2 :(得分:1)

这可能是因为$rowtrue而不是数组:

$ php -r 'var_dump($row = pow(2,2) && true,$row);'
bool(true)
bool(true)
$ php -r 'var_dump($row = pow(2,2) && false,$row);'
bool(false)
bool(false)

pow这里是一个随机函数)

这是因为&&的{​​{3}}比=()。与往常一样,使用while ( ($row = mysql_fetch_assoc($query) ) && $f<4){

解决
{{1}}