当我删除&& $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++;
}
答案 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)
这可能是因为$row
是true
而不是数组:
$ 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}}