Php 嵌套循环逻辑
我有这个代码块Php 嵌套循环逻辑,php,nested-loops,Php,Nested Loops,我有这个代码块 <?php $myArray = array('a', 'b', 'c'); foreach ($myArray as $k => $v) { echo $v; for ($i = 1; $i < 5; $i++) { if ($i == $k) { break; } echo $i; //a1234bc1 } } ?> 在得到c之后的值之前
<?php
$myArray = array('a', 'b', 'c');
foreach ($myArray as $k => $v) {
echo $v;
for ($i = 1; $i < 5; $i++) {
if ($i == $k) {
break;
}
echo $i; //a1234bc1
}
}
?>
在得到c之后的值之前,我对它没有任何问题。不应该是1234而不是1?我错过什么了吗?因为
$k
的值是0
,for循环中没有0
,它覆盖所有值并打印所有1到4,因此输出是a1234
$k
的值是1
,for循环从1
开始,因此在if条件下,它处于第一次迭代中,因此循环在for循环的第一次迭代中停止并仅打印b,因此输出是a1234b
$k
的值是2
,而for循环从1
开始,因此在if条件下,它处于第二次迭代中,所以循环在打印c1之后的for循环的第二次迭代中停止,所以输出是a1234bc1
$k
的值是0
,for循环中没有0
,它覆盖所有值并打印所有1到4,因此输出是a1234
$k
的值是1
,for循环从1
开始,因此在if条件下,它处于第一次迭代中,因此循环在for循环的第一次迭代中停止并仅打印b,因此输出是a1234b
$k
的值是2
,而for循环从1
开始,因此在if条件下,它处于第二次迭代中,所以循环在打印c1之后的for循环的第二次迭代中停止,所以输出是a1234bc1
foreach($k=>v)循环执行3次$myArray
有3个元素
第一次跑步
$k
=0,它是第一个元素的索引,$v
=“a”
循环的输出
for ($i = 1; $i < 5; $i++) { ... }
for ($i = 1; $i < 5; $i++)
for ($i = 1; $i < 5; $i++) { ... }
循环的输出
for ($i = 1; $i < 5; $i++) { ... }
for ($i = 1; $i < 5; $i++)
for ($i = 1; $i < 5; $i++) { ... }
循环的输出
for ($i = 1; $i < 5; $i++) { ... }
for ($i = 1; $i < 5; $i++)
for ($i = 1; $i < 5; $i++) { ... }
for($i=1;$i<5;$i++){…}
输出从1到5的所有数字,并在满足$k
的精确值后停止。作为$k
euqals 2,这次循环在输出1后执行。第二次运行时,break
执行并终止oputput
最终输出:
a1234bc1
您可以foreach($myArray as$k=>$v)
循环执行3次,因为$myArray
有3个元素
第一次跑步
$k
=0,它是第一个元素的索引,$v
=“a”
循环的输出
for ($i = 1; $i < 5; $i++) { ... }
for ($i = 1; $i < 5; $i++)
for ($i = 1; $i < 5; $i++) { ... }
循环的输出
for ($i = 1; $i < 5; $i++) { ... }
for ($i = 1; $i < 5; $i++)
for ($i = 1; $i < 5; $i++) { ... }
循环的输出
for ($i = 1; $i < 5; $i++) { ... }
for ($i = 1; $i < 5; $i++)
for ($i = 1; $i < 5; $i++) { ... }
for($i=1;$i<5;$i++){…}
输出从1到5的所有数字,并在满足$k
的精确值后停止。作为$k
euqals 2,这次循环在输出1后执行。第二次运行时,break
执行并终止oputput
最终输出:
a1234bc1
试试这个
$myArray = array('a', 'b', 'c');
foreach ($myArray as $k => $v) {
echo $v;
for ($i = 1; $i < 5; $i++) {
echo $i; //a1234b1234c1234
}
}
$myArray=array('a','b','c');
foreach($k=>v的myArray){
echo$v;
对于($i=1;$i<5;$i++){
echo$i;//a1234b1234c1234
}
}
删除if条件。尝试此操作
$myArray = array('a', 'b', 'c');
foreach ($myArray as $k => $v) {
echo $v;
for ($i = 1; $i < 5; $i++) {
echo $i; //a1234b1234c1234
}
}
$myArray=array('a','b','c');
foreach($k=>v的myArray){
echo$v;
对于($i=1;$i<5;$i++){
echo$i;//a1234b1234c1234
}
}
删除if条件。第一次迭代:
第一个循环
$k=0$v=a
第二圈
$i不等于$k
输出:a1234
第二次迭代:
第一个循环
$k=1$v=b
第二圈
$i等于$k(即1)
输出:a1234b
3次迭代:
第一个循环
$k=2$v=c
第二圈
$i等于$k(即2)
输出:a1234bc1第一次迭代:
第一个循环
$k=0$v=a
第二圈
$i不等于$k
输出:a1234
第二次迭代:
第一个循环
$k=1$v=b
第二圈
$i等于$k(即1)
输出:a1234b
3次迭代:
第一个循环
$k=2$v=c
第二圈
$i等于$k(即2)
输出:a1234bc1想要这个吗?A1234B1234C1234您期望的输出是什么?@devpro否我想对前面的代码进行一些解释?为什么是a1234bc1为什么不是a1234bc1234@FatalError因为在那个阶段,$i和$k的值等于2(两者都相等)。是的,它首先在forloop中,它将$i打印为1。然后,$i增加到2。要这样做吗?A1234B1234C1234您期望的输出是什么?@devpro否我想对前面的代码进行一些解释?为什么是a1234bc1为什么不是a1234bc1234@FatalError因为您的$i和$k值在该阶段等于2(两者都相等)。是的,它首先在forloop中,它将$i打印为1。然后$i递增为2。第一次迭代的输出将是1234而不是12345第一次迭代的输出将是1234而不是12345