while循环和多个条件
问题描述:
是否有可能在while循环中写入多个条件?如果不是,还有什么替代方案?我试过了,并且返回了一条与设置while循环条件的代码行有关的错误。这是我的意思的一个例子。while循环和多个条件
$s = 1;
while ($result_row = mysql_fetch_assoc($query) && $s < 5)
{
echo $result_row['id'];
$s++;
}
答
这是可能的,但由于=
具有较低precedence比&&
你需要括号,以确保您的语句是正确解释:
while (($result_row = mysql_fetch_assoc($query)) && ($s < 5))
左右$s < 5
括号是这里不需要,但我为了清楚起见,已经包括了它
但是,仅通过添加LIMIT 5
来修改查询以返回5行会更容易。
SELECT ...
FROM yourtable
ORDER BY ...
LIMIT 5
答
你可以尝试:
$s=1
while ($result_row = mysql_fetch_assoc($query))
{
echo $result_row['id'];
$s++;
if($s>5){
break;
}
}
答
,而我认为没有错在。另一方面是做这样的事情。
$s = 1;
while ($result_row = mysql_fetch_assoc($query))
{
if($s < 5) {
//enter the condition
}
$s++;
}
答
的$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)
,这是你想要的,和循环一直连续的逻辑值的作业返回true-ish,以及s
小于5.
确定这是可能的。你试过了吗?整个“while”条件,无论它有多少组件,都必须评估为TRUE或FALSE。这是唯一的要求。在像这样的复合语句中做一个赋值时要小心,尽管...由于运算符的优先级,'$ result_row'可能没有得到你所期望的。 – 2012-08-15 21:01:57
你的逻辑是正确的。错误说的是什么? – 2012-08-15 21:01:58
绝对有可能就像其他任何控制结构一样。它只需评估为真或假。 – j08691 2012-08-15 21:02:04