继续2并在switch语句中断

typ*_*mer 22 php switch-statement

我是PHP的新手,在线查看下面的代码.它已经continue 2并且breakswitch/case声明中.这是什么意思?

foreach ( $elements as &$element ) {

    switch ($element['type']) {
        case a :
            if (condition1)
                continue 2; 
            break;

        case b :
            if (condition2)
                continue 2;
            break;
    }

    // remaining code here, inside loop but outside switch statement
}
Run Code Online (Sandbox Code Playgroud)

sho*_*dev 31

来自PHP.net:continue:

continue接受一个可选的数字参数,该参数告诉它应该跳到多少级别的封闭循环到它的末尾.默认值为1,因此跳到当前循环的末尾.

来自PHP.net:switch

如果循环内有一个开关并希望继续外循环的下一次迭代,请使用continue 2.

PHP继续执行语句,直到switch块结束,或者第一次看到break语句.如果你不在case语句列表的末尾写一个break语句,PHP将继续执行以下情况的语句.

说明:continue 2跳转到环路的在2层后面的下一个迭代,这是foreach.的break(相当于break 1)结束电流环路,这是switch.

英语:对于每一个$elements,如果类型是"a"并且$element满足或者类型是"b"并且condition1满足,则继续下一个condition2并忽略其余的开关选项.否则,继续执行下一个开关选项,或者,如果这是最后一个开关选项,则在切换后执行任何代码.

这是一个演示.
对不起,viper-7.com似乎暂时失败了.

  • 恩,那就对了。`continue 2` 直接跳到 `foreach` 循环的下一次迭代,在 `switch` 之后不执行任何代码。[这是一个演示。](http://viper-7.com/4SkL9L) (2认同)