php switch continue 什么意思??

注意和其它语言不同,continue 语句作用到 switch 上的作用类似于 break。如果在循环中有一个 switch 并希望 continue 到外层循环中的下一轮循环,用 continue 2。

这句话什么意思??
这里 有什么不一样? 跟c++ java???

阅读 7.4k
2 个回答

不同点在于 PHPcontinue 后面可以加一个数字 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中的语句。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题