请有人能详细解释一下我的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等等,我知道这是基本的东西,但我无法得到它。
谢谢。答案 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回显两次,依此类推。