PHP for循环中的奇怪问题

时间:2013-07-02 01:30:16

标签: php

我有这个简单的循环:

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 />";

为什么它只针对第一次迭代执行而不执行任何其他迭代?

2 个答案:

答案 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”。