这将是一个我知道的愚蠢问题,但对于我的生活,我无法找到答案,因为对于/ 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);
答案 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;
}