继续2并在switch语句中断

时间:2014-10-17 18:16:34

标签: 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
}

5 个答案:

答案 0 :(得分:19)

来自PHP.net:continue

  

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

来自PHP.net:switch

  

如果你在循环中有一个开关并希望继续下一个   迭代外循环,使用continue 2.

  

PHP继续执行语句,直到切换结束   阻止,或第一次看到break语句。如果你不写   在一个案例的语句列表末尾的一个break语句,PHP将会去   执行以下案件的陈述。

说明: continue 2跳回到2级返回循环的下一次迭代,即foreachbreak(相当于break 1)结束当前循环,即switch

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

答案 1 :(得分:3)

恕我直言,区别在于你在切换后和循环结束前有代码。

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

            case b :
                if (condition2)
                    continue 2;
                break;
        }
        // The code here will be reached if break but not if continue 2
    }

答案 2 :(得分:2)

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

来源:http://php.net/manual/en/control-structures.continue.php

答案 3 :(得分:1)

继续和休息是相似的,因为这将阻止某些事情发生。

如果继续,它将在大括号后停止任何内容,但不会停止循环。 switch语句刚刚退出此语句并继续下一个语句。

如果中断,它将停止整个循环继续,结束循环。

答案 4 :(得分:0)

只需通过ftp在ascii编辑器(如notepad ++)中打开文件,转到错误中提到的相应行并进行更改

继续;进入继续2;

真的很容易。