我有这个简单的循环:
for ($user = 1; $user <= 219; $user++)
{
echo "Yo <br />";
$pos = 1;
echo "Set pos to $pos <br />";
do
{
echo "Doing user $user , $pos <br />";
$pos++;
}
while ($pos <= 8);
echo "Done user $user , $pos <br /><br ";
}
当我运行它时,仅在第一次迭代时它会回显第一个'yo'。对于从2到219的每次迭代,输出从Set pos to $pos
开始。样品:
Yo
Set pos to 1
Done user 1 , 9
Set pos to 1
Done user 2 , 9
Set pos to 1
Done user 3 , 9
Set pos to 1
Done user 4 , 9
Set pos to 1
Done user 5 , 9
这句话发生了什么:
echo "Yo <br />";
为什么它只针对第一次迭代执行而不执行任何其他迭代?
答案 0 :(得分:6)
它在每次迭代中执行,你忘了在最后关闭<br />
。
echo "Done user $user , $pos <br /><br />";
因此,如果你检查页面的来源,它应该说:
<br Yo <br />
答案 1 :(得分:0)
如果echo "Yo <br />"
位于do{}
循环内,那么它将在每次迭代时执行,就在"Doing user [etc.]"
之前。现在它不在do{}
循环内,它只是在for()
循环内。
因此,在$pos
超过8并且for
循环开始另一次迭代后,您才会看到“Yo”。