注意和其它语言不同,continue 语句作用到 switch 上的作用类似于 break。如果在循环中有一个 switch 并希望 continue 到外层循环中的下一轮循环,用 continue 2。
这句话什么意思??
这里 有什么不一样? 跟c++ java???
不同点在于
PHP
的
continue
后面可以加一个数字
n
,代表跳出到外层第
n
重循环,默认
continue
表示放弃这次循环(即相当于
continue 1
,跳出到外层第一重循环),但是注意,当
n
> 外层的循环数时,将会报错。这样你也理解,为什么
switch
里面直接
continue
的话,就是
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
中的语句。