11

是否可以在while循环中编写多个条件?如果没有,有什么替代方案?我尝试了它并返回一个错误,该错误与设置 while 循环条件的代码行有关。这是我的意思的一个例子。

$s = 1;

while ($result_row = mysql_fetch_assoc($query) && $s < 5)
{
echo $result_row['id'];
$s++;
}
4

4 回答 4

31

这是可能的,但是因为=它的优先级低于&&你需要括号来确保你的语句被正确解释:

while (($result_row = mysql_fetch_assoc($query)) && ($s < 5))

这里不需要括号$s < 5,但为了清楚起见,我将它们包括在内。

但是,将查询修改为仅返回 5 行会更容易,只需添加LIMIT 5.

SELECT ...
FROM yourtable
ORDER BY ...
LIMIT 5
于 2012-08-15T21:02:29.993 回答
1

你可以试试:

$s=1
while ($result_row = mysql_fetch_assoc($query))
{
    echo $result_row['id'];
    $s++;
    if($s>5){
        break;
    }
}

http://php.net/manual/en/control-structures.break.php

于 2012-08-15T21:03:21.217 回答
0

虽然我认为这没有错。另一种方法是做这样的事情。

$s = 1;
while ($result_row = mysql_fetch_assoc($query))
{
    if($s < 5) {
        //enter the condition
    }
    $s++;
}
于 2012-08-15T21:04:34.353 回答
0

的值$result_row可能被设置为布尔条件,即是否mysql_fetch_assoc($query)返回真值且$s小于 5。因此尝试$result_row作为字典阅读不再有效。

您可以使用括号来准确指定如何解析事物:

while (($result_row = mysql_fetch_assoc($query)) && ($s < 5))

这样,$result_row设置为mysql_fetch_assoc($query),这就是您想要的,并且只要该赋值的逻辑值返回真值并且s小于 5,循环就会继续。

于 2012-08-15T21:08:01.640 回答