2

所以我有一个查询,虽然我的查询可能返回 20 个结果,但我只希望它显示前 9 个结果。有一个愚蠢的原因,我不只是将查询结果限制为 9,为此我需要知道如果 $i 达到 9 时如何停止 while 函数。

代码是

    $i = 0;
    while($array = mysql_fetch_array($queryresults) && $i <= '9')
    {
               echo $array['id'];
               $i++;
    }

如何让它在第 9 个结果后停止发出更多回声?谢谢!

4

4 回答 4

4

将限制条件放在首位也将确保您只获取 9 行,而不是 10 行和一个丢弃,因为这&&被称为惰性(如果第一部分为假,它甚至不会查看下一部分)。

$i = 0;
while($i < 9 && $array = mysql_fetch_array($queryresults)){
    echo $array['id'];
    $i += 1;
}

或者如果你想变得花哨:

$i = 9;
while($i-- > 0 && $array = mysql_fetch_array($queryresults)){
    echo $array['id'];
}

但我发现这个错误很容易..

于 2012-04-13T22:14:17.003 回答
2
$i = 0;
while($array = mysql_fetch_array($queryresults) && $i++ < 9)
    echo $array['id'];
}

笔记:

  1. 无需加9引号
  2. 您可以通过$i++while循环条件中进行比较后递增(尽管您不必这样做,您也可以将其echo $array['id']放在 while 循环主体之后)。
  3. 小心!您想要< 9而不是<= 9从零开始,否则您将获得 10 次循环迭代。

干杯

于 2012-04-13T22:17:24.270 回答
0

$i++ 需要在 while 循环内

你也应该有$i <= 9而不是,$i <= '9'但它仍然应该按原样工作

于 2012-04-13T22:14:24.707 回答
0

'9' 必须是 9

$i = 0;
while($array = mysql_fetch_array($queryresults) && $i < 9){
    echo $array['id'];
    $i += 1;
}
于 2012-04-13T22:16:13.923 回答