Php用于嵌套循环

时间:2011-03-27 15:54:45

标签: php for-loop

请有人能详细解释一下我的php循环如何工作?

for($a=1;$a<10;$a++) 
{
    echo "<br>";

    for ($b=0;$b<$a;$b++)
    echo $a;

}

为什么输出是 1 22 333 4444 55555等 而不仅仅是1 2 3 4 5等等,我知道这是基本的东西,但我无法得到它。

谢谢。

3 个答案:

答案 0 :(得分:6)

关键是内循环中的$a

for ($b=0;$b<$a;$b++) 
             ^-------------- HERE 

这将在每个循环中从零计数到$a(每次都增加),并多次输出$a

 $a = 0:  no output (inner loop runs from 0 to 0)
 $a = 1:  1 output  (inner loop runs from 0 to 1)
 $a = 2:  2 outputs (inner loop runs from 0 to 2)
 $a = 3:  3 output  (inner loop runs from 0 to 3)
 etc.....

答案 1 :(得分:2)

代码中有两个循环,外循环将$ a的值初始化为1

$a = 1;

然后在内循环中,$ b设置为0

$b = 0;

内循环首次执行成功的条件是

$b < $a 

或者如果你不遵循它,

0 < 1

因为记住内部循环将$ b初始化为0,并且$ a在外部循环中初始化为1

所以0小于1,所以它会成功并执行

echo $a; // 1

内部循环只执行一次,因为在第二次迭代中,$ b已经是1

$b++

现在它将再次进入外部循环,并且$ a将等于2,因为for循环刚刚执行

$a++

2小于10因此它将再次执行第二个循环。但现在第二个循环是条件变化,因为

$b < $a // 0 < 2

因为记住$ a现在等于2!因此条件成功并将执行

echo $a // or 2

然后在第一次尝试执行后,for循环将执行$ b ++,因此$ b将变为1.

现在,for循环将再次测试条件,结果将是

$b < $a // 1 < 2

1小于2,因此它将再次执行echo语句

echo $a // 2

因此你得到22

之后,for循环将执行$ b ++,所以现在$ b已经是2!因为2不小于2,所以它会失败并再次进入外循环。

答案 2 :(得分:1)

每次通过外循环,内循环执行a次。因此1回显一次,2回显两次,依此类推。