【问题标题】:Php for nested loop用于嵌套循环的 PHP
【发布时间】:2011-03-27 15:54:44
【问题描述】:

请有人详细解释一下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 等等,我知道这是一些基本的东西,但我无法理解。

谢谢。

【问题讨论】:

  • 您希望输出为1 2 3 4 5?

标签: php for-loop


【解决方案1】:

关键是内部循环中的$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.....

【讨论】:

    【解决方案2】:

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

    $a = 1;
    

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

    $b = 0;
    

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

    $b < $a 
    

    如果你不关注它,

    0 < 1
    

    因为记得内循环初始化$b为0,而$a在外循环初始化为1

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

    echo $a; // 1
    

    内部循环只会执行 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 $a // 2
    

    因此你得到 22

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

    【讨论】:

      【解决方案3】:

      每次通过外循环,内循环都会执行a 次。所以 1 回显一次,2 回显两次,以此类推。

      【讨论】:

        猜你喜欢
        • 2012-08-11
        • 2012-06-25
        • 1970-01-01
        • 2021-12-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多