我有这个代码块
<div></div>
我没有问题,直到我得到c后的值。不应该是1234而不是1?我错过了什么吗?
答案 0 :(得分:2)
由于,
在$k
的foreach值的第一次迭代中,0
并且for循环中没有0
,它涵盖了所有并打印全部1到4,因此输出是a1234
在$k
的foreach值的第二次迭代中,1
和1
的循环开始,所以如果条件是第一次迭代,那么循环停止for循环的第一次迭代和仅打印b,因此输出为a1234b
类似地,在$k
的foreach值的第三次迭代中是2
并且从1
开始循环,所以在if条件下它是在第二次迭代中,所以循环停止打印c1后的for循环的第二次迭代,因此输出为a1234bc1
我想现在对你很清楚。
答案 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