1

我有这个简单的循环:

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

当我运行它时,只有第一次迭代才会回显第一个“哟”。对于从 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 />";

为什么它只在第一次迭代中执行,而不在其他任何迭代中执行?

4

2 回答 2

6

它在每次迭代中执行,你忘了<br />在最后关闭。

echo "Done user $user ,  $pos <br /><br />";

因此,如果您检查页面的来源,它应该说:

<br Yo <br />
于 2013-07-02T01:32:24.480 回答
0

如果您echo "Yo <br />"do{}循环内,那么它将在每次迭代中执行,就在"Doing user [etc.]". 现在它不在do{}循环内,它只是在for()循环内。

因此,您只会在$pos超过 8 后看到“Yo”,并且for循环开始另一次迭代。

于 2013-07-02T01:33:56.327 回答