循环和多个条件

时间:2012-08-15 20:59:39

标签: php

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

$s = 1;

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

4 个答案:

答案 0 :(得分:24)

这是可能的,但由于=的{​​{3}}低于&&,因此您需要使用括号来确保正确解释您的语句:

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

此处不需要$s < 5周围的括号,但为了清楚起见,我已将它们包括在内。

但是,通过添加LIMIT 5来修改查询以返回5行会更容易。

SELECT ...
FROM yourtable
ORDER BY ...
LIMIT 5

答案 1 :(得分: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

答案 2 :(得分:0)

虽然我认为没有错。反过来就是做这样的事情。

$s = 1;
while ($result_row = mysql_fetch_assoc($query))
{
    if($s < 5) {
        //enter the condition
    }
    $s++;
}

答案 3 :(得分:0)

$result_row的值可能被设置为布尔条件,即mysql_fetch_assoc($query)是否返回true-ish且$s是否小于5.因此尝试阅读{{1}如字典不再有用。

您可以使用括号来准确指定解析内容的方式:

$result_row

这样,while (($result_row = mysql_fetch_assoc($query)) && ($s < 5)) 设置为$result_row,这就是你想要的,循环继续,只要该赋值的逻辑值返回真实的东西 - ish,以及mysql_fetch_assoc($query)小于5。