-3

我得到了这个代码......它使用了两个循环......,你能解释一下它是如何工作的吗?结果是 16

for($i=1; $i<=2; $i++)
    {
       for($j=1; $i<=5; $i++)
       {
          if($i == 1)
             echo $j;
          elseif($i ==2)
             echo $j+5;
       }
    } 

但如果我这样做

for($i=1; $i<=2; $i++)
        {
           for($j=1; $i<=5; $i++)
           {
              if($i == 1)
                 echo $j;
              elseif($i ==2)
                 echo $j;
           }
        } 

结果是 11。

怎么会这样 ?

4

4 回答 4

2

您的代码与以下内容相同:

$j = 1;
for ($i = 1; $i <= 5; $i++) {
  if ($i == 1) {
    echo $j;
  }
  elseif ($i == 2) {
    echo $j + 5;
    // below is second piece code.
    // echo $j;
  }
}

所以:

第一段代码回显1and 1+5,这将是16.

第二段代码回显1and 1,这将是11.

于 2012-09-19T09:46:17.833 回答
0

很简单,你的外循环将运行一次。

$i在内循环中得到加分,所以外循环只运行一次......

内循环将运行 5 次,每次都$i加 1,什么时候$i是 1,你的打印$j总是 1,所以现在你有1输出......

那么什么时候$i是 2 你正在打印$j + 5,这将是 1 + 5 = 6,所以你将16在你的输出中......

因此,当您更改$j + 5为 just时$j,您将11在输出...

(您实际上是在第一个代码 1 和 6 中打印 2 个单独的数字作为字符串,在第二个代码中,1 和 1)

于 2012-09-19T09:50:30.123 回答
0

是的!那很好。在第一次内部迭代中,如果(i==1)它是 1。记住你没有增加你正在打印的 j。所以在第二次迭代 i==2 时它是 1.so 最后是 1 1...

于 2012-09-19T11:39:14.883 回答
-1

你的代码说 11 和他的 16,因为他得到了 $j+5;(11 + 5 = 16 ;) )

于 2012-09-19T09:47:52.197 回答