PHP中for和foreach如何跳出循环
方法一:exit或die,die是exit的别名
<?php
$arr = ['aaa','bbb','ccc','ddd','eee','fff','ggg'];
$num = 'ddd';
for ($i = 0; $i < count($arr); $i++){
if($num == $arr[$i]){
exit;
//die;
}
var_dump("第".$i."循环中");
}
方法二:break
<?php
$arr = ['aaa','bbb','ccc','ddd','eee','fff','ggg'];
$num = 'ddd';
for ($i = 0; $i < count($arr); $i++){
if($num == $arr[$i]){
break;
}
var_dump("第".$i."循环中");
}
方法三:return
<?php
$arr = ['aaa','bbb','ccc','ddd','eee','fff','ggg'];
$num = 'ddd';
for ($i = 0; $i < count($arr); $i++){
if($num == $arr[$i]){
return;
}
var_dump("第".$i."循环中");
}
不管是for循环还是foreach循环,以上三种方法都能得到如下结果
上面展示的只是跳出一层循环,如果是两层循环,效果如何呢
for($i = 1; $i <= 10; $i++){
for($j = 1; $j <= 10; $j++){
$m = $i*$j;
if($m == 49){
return;
}
var_dump("这是第二层".$j);
}
var_dump("---------------------------这是第一层".$i);
}
for($i = 1; $i <= 10; $i++){
for($j = 1; $j <= 10; $j++){
$m = $i*$j;
if($m == 49){
exit;
}
var_dump("这是第二层".$j);
}
var_dump("---------------------------这是第一层".$i);
}
return和exit,在条件满足的情况下,都能直接跳出两层循环,效果如下
而break,却只能跳出当前循环
for($i = 1; $i <= 10; $i++){
for($j = 1; $j <= 10; $j++){
$m = $i*$j;
if($m == 49){
break;
}
var_dump("这是第二层".$j);
}
var_dump("---------------------------这是第一层".$i);
}
效果如下
对于一些特定场景,可以用到break,跳出内层循环,继续执行外层循环。
如果想直接退出两层循环,break也是可以做到的。
for($i = 1; $i <= 10; $i++){
for($j = 1; $j <= 10; $j++){
$m = $i*$j;
if($m == 49){
break 2;
}
var_dump("这是第二层".$j);
}
var_dump("---------------------------这是第一层".$i);
}
只需要break 2
,就能跳出两层循环