/ loop 0 = 1的基本迭代?

时间:2014-02-14 11:44:54

标签: php for-loop operators

这将是一个我知道的愚蠢问题,但对于我的生活,我无法找到答案,因为对于/ loop的帮助是如此常见的雷区。我从另一个问题得到了这个基本循环,然而,我想我需要的东西,即使我设置了generateDIVs(0); 我还有一个。我尝试将$i设置为-1,因此计数是正确的,但它不起作用。

也许我在这里过分迂腐,但你怎么得到正确的数字到正确的数字。如果我想要3个div,我想放3个而不是2个。

原始问题:PHP generate DIVs based on a specific number

    ​function generateDIVs($number)
    {
     for ($i = 0; $i <= $number; $i++)
     {
      echo "<div> Whoop <div/>";
     }
     echo "Number count:" .$number;
    }

generateDIVs(0);

4 个答案:

答案 0 :(得分:3)

将&lt; =更改为&lt;

for ($i = 0; $i < $number; $i++)

答案 1 :(得分:2)

您的代码应如下所示 条件应与<相匹配,而不是<=

function generateDIVs($number)
{
 for ($i = 0; $i < $number; $i++)
 {
  echo "<div> Whoop <div/>";
 }
 echo "Number count:" .$number;
}

generateDIVs(0);

答案 2 :(得分:2)

你必须从逻辑上思考这个问题,否则如果你不熟悉循环就会让人感到困惑。

<=运算符表示less than OR equal to,所以当此语句为true时,循环将继续。

在您的示例中,您将从0开始关闭循环,为$i = 0

for ($i = 0; $i <= $number; $i++)

因此,第一次循环运行时,它将检查$i less than OR equal to $number中存储的值$number是否为generateDIVs(0)

您在$i中有什么价值?好好看看less than OR equal to你传递的值是0.

因此循环将首次运行,检查$number(即0)是less than OR equal to $i(即0)。

0 less than OR equal to 0?是的,0 = 0。

因此循环将运行一次,然后将for ($i = 0; $i < $number; $i++)递增1. 1不是$i 0,因此它不会再次运行。

如果您将陈述更改为

is less

循环将继续在$number generateDIVs(0)而不是$i的情况下运行。

将它传递给is less之前的相同值,循环将首先检查generateDIVs(1)(当前为0)$i是否为0.但它不是,所以它不会运行

传递一个不同的值,例如is less,循环将首先检查$i(当前为0)$i是否为1.它是什么,循环将运行一次,并且然后is less的值递增。

然后循环将检查它是否可以再次运行,检查{{1}}(当前为1){{1}}是否为1,而不是1,因此它不会运行。

我建议阅读有关PHP Comparison Operators的内容。互联网可能是一个信息的雷区,但官方PHP手册应该始终是首先要检查你是否有一个问题的东西。

答案 3 :(得分:1)

也许是这样的:

function generateDiv( $number ) {

    $counter = $number
    while( $counter-- ) {
        echo '<div>Whoop</div>';
    }

    echo $number;
}