嵌套循环逻辑

时间:2016-03-15 08:11:03

标签: php nested-loops

我有这个代码块

<div></div>

我没有问题,直到我得到c后的值。不应该是1234而不是1?我错过了什么吗?

4 个答案:

答案 0 :(得分:2)

由于,

  1. $k的foreach值的第一次迭代中,0并且for循环中没有0,它涵盖了所有并打印全部1到4,因此输出是a1234

  2. $k的foreach值的第二次迭代中,11的循环开始,所以如果条件是第一次迭代,那么循环停止for循环的第一次迭代和仅打印b,因此输出为a1234b

  3. 类似地,在$k的foreach值的第三次迭代中是2并且从1开始循环,所以在if条件下它是在第二次迭代中,所以循环停止打印c1后的for循环的第二次迭代,因此输出为a1234bc1

  4. 我想现在对你很清楚。

答案 1 :(得分:0)

foreach ($myArray as $k => $v)循环执行 3次,因为$myArray有3个元素。

首次运行

$k = 0这是第一个元素的索引,$v =&#34; a&#34;

echo $v; // Outputs a

循环输出

for ($i = 1; $i < 5; $i++) { ... }

输出从1到5的所有数字,并在符合$k的确切值后停止。 $k为0,因此条件(break)永远不会被触发。因此,所有从1到5的数字都会被回应。

到目前为止的输出:

  

A1234

第二次运行

$k = 1这是第二个元素的索引,$v =&#34; b&#34;

for ($i = 1; $i < 5; $i++) { ... }

循环输出

for ($i = 1; $i < 5; $i++)

输出从1到5的所有数字,并在符合$k的确切值后停止。当$k为1时,break在第一次运行llop时执行,因此没有输出。

到目前为止的输出:

  

a1234b

第三次运行

$k = 2这是第三个元素的索引,$v =&#34; c&#34;

echo $v; // Outputs c

循环输出

for ($i = 1; $i < 5; $i++) { ... }

输出从1到5的所有数字,并在符合$k的确切值后停止。这次为$k euqals 2,一旦输出,循环就会执行1.第二次运行break执行并终止oputput

最终输出:

  

a1234bc1

答案 2 :(得分:0)

试试这个

$myArray = array('a', 'b', 'c');

foreach ($myArray as $k => $v) {
    echo $v;
    for ($i = 1; $i < 5; $i++) {
        echo $i; //a1234b1234c1234
    }
}

删除条件。

答案 3 :(得分:0)

第一次迭代:
 第一循环
      $ k = 0; $ v = a;
      第二回路
       $ i不等于$ k;
    输出:a1234

第二次迭代:
 第一循环
 $ k = 1; $ v = b;
  第二回路
   $ i等于$ k(即1);
 输出:a1234b

3次迭代:
 第一循环
 $ k = 2; $ v = c;
  第二回路
   $ i等于$ k(即2);
 输出:a1234bc1