扫码关注官方订阅号
注意和其它语言不同,continue 语句作用到 switch 上的作用类似于 break。如果在循环中有一个 switch 并希望 continue 到外层循环中的下一轮循环,用 continue 2。
这句话什么意思?? 这里 有什么不一样? 跟c++ java???
走同样的路,发现不同的人生
不同点在于 PHP 的 continue 后面可以加一个数字 n,代表跳出到外层第n重循环,默认 continue 表示放弃这次循环(即相当于 continue 1,跳出到外层第一重循环),但是注意,当n> 外层的循环数时,将会报错。这样你也理解,为什么 switch 里面直接 continue的话,就是 break
PHP
continue
n
continue 1
switch
break
for($i=0;$i<3;$i++){ for($j=0;$j<3;$j++){ switch ($j) { case 1: continue 3; // 当$j=1时,跳出到外层第三重循环($i)继续执行 break; default: echo $j; break; } } } // 最终输出是 000
for($j=0;$j<3;$j++){ switch ($j) { case 1: continue 2; // 当$j=1时,跳出到外层第二重循环($j)继续执行 break; default: echo $j; break; } } // 最终输出是 02
$j=1; switch ($j) { case 1: continue; // 跳出switch,写成continue 1也可以,若写成continue 2将会报错 break; default: echo $j; break; } // 没有输出
for($j=0;$j<3;$j++){ switch ($j) { case 1: continue 3; // 当$j=1时,将会报错,因为外层只有两层循环 break; default: echo $j; break; } } // 会在输出一个0后报错, PHP Fatal error: Cannot break/continue 3 levels in xxxx
举个例子:
<?php $foo = 'bar'; $bar = true; switch($foo) { case 'bar': if($bar) { continue; } echo '$bar is false'; break; case 'bar': case 'foo': echo '$bar is true, or $foo is foo'; break; default: echo "You shouldnt ever get here"; break; }
可以看到,$foo的值是bar,那么到了switch里,你可能会想,这个结果应该是输出$bar is false。但是其实并不是,这个例子什么都不会输出。因为if里面用了continue,这里的continue就相当于break,将整个流程跳出switch,不再执行下面的switch中的语句。
$foo
bar
$bar is false
if
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
不同点在于
PHP的continue后面可以加一个数字n,代表跳出到外层第n重循环,默认continue表示放弃这次循环(即相当于continue 1,跳出到外层第一重循环),但是注意,当n> 外层的循环数时,将会报错。这样你也理解,为什么switch里面直接continue的话,就是break举个例子:
可以看到,
$foo的值是bar,那么到了switch里,你可能会想,这个结果应该是输出$bar is false。但是其实并不是,这个例子什么都不会输出。因为if里面用了continue,这里的continue就相当于break,将整个流程跳出switch,不再执行下面的switch中的语句。