0

下面是我的代码中的一个循环。当起始值和结束值为零时,循环打印值零 (0)。但是我在这里需要做的是,当起始值和结束值为零时,它不应该打印任何内容。有人可以告诉我如何改变方法吗?

while ($recQ = mysqli_fetch_array($runx))
{
   for($ii=$recQ['start']; $ii<=$recQ['end']; $ii++)
    {
        if (!in_array($ii, $exclude))
        {
            echo $ii.", ";
        }
    }
}   
4

3 回答 3

1

empty()怎么样,使用函数对值添加额外的检查:

while ($recQ = mysqli_fetch_array($runx))
{
   for($ii=$recQ['start']; $ii<=$recQ['end']; $ii++)
    {
        if (!in_array($ii, $exclude))
        {
            if (!empty($ii)) echo $ii.", ";
        }
    }
}   
于 2012-11-27T05:51:09.263 回答
0

continue;您可以通过在主循环中使用来跳过内部循环的执行:

while ($recQ = mysqli_fetch_array($runx))
{
   if ($recQ['start'] == 0 && $recQ['end'] == 0) {
       continue; // skip the rest of the code inside this loop
   }
   for($ii=$recQ['start']; $ii<=$recQ['end']; $ii++)
于 2012-11-27T06:00:41.037 回答
0

您可以尝试一些不同的方法:

$resulting_set = array();

while( $recQ = mysqli_fetch_array($runx) ){

    $my_set = range( $recQ['start'], $recQ['end'] );

    $resulting_set = array_merge( 
        $resulting_set,
        array_diff( $my_set, $exclude )
    );

}

echo implode( ', ', $resulting_set);

该代码更易于阅读,并且结果不会包含您从版本中获得的尾随逗号 + 空格(假设您出于某种原因不需要它)。

这也更容易重构,因为您可以操作包含输出的数组比动态输出容易得多。

要从 values 中删除 0,您只需将 0 添加到 $exclude 数组即可。

于 2012-11-27T06:07:58.490 回答