PHP - 交换机案例中的break和continue之间的区别

时间:2016-03-25 12:25:21

标签: php switch-statement break continue

之间有什么不同
switch (variable) {
        case 'value':
        # code...
        break;

        case 'value':
        # code...
        break;
}

和这一个

switch (variable) {
        case 'value':
        # code...
        continue;

        case 'value':
        # code...
        continue;
}

结果真的不同还是一样?

3 个答案:

答案 0 :(得分:1)

在PHP中,上述两个代码的工作方式相同。此处breakcontinue语句阻止控制转到下一个case。这就是continue行为,就像break一样。此外,开关只能执行一次。这不是一个循环。因此continue与此无关。

注意:如果存在包含此switch语句的循环,则结果将不同。

答案 1 :(得分:1)

这是PHP的一个特例,因为official documentation

  

注意:在PHP中,switch语句被视为循环结构   为了继续。继续表现得像休息(当没有   参数传递)。如果一个开关在一个循环内,继续2将   继续外循环的下一次迭代。

所以从本质上讲,这意味着你的两个例子之间没有实际的区别。但是为了清楚起见,我认为最好使用break,因为这是其他语言的标准。另请注意,如果开关在循环内(或更多),您可以使用continue 2(或3,4 ......)前进到循环的下一次迭代。

答案 2 :(得分:0)

这是一个简单的示例代码,其中包含上述两种开关案例

<?php
    $variable = 20;
    echo "Normal<br/>";
    switch ($variable) {
        case '20':
            echo "twenty";
        break;
        case '21':
            echo "twenty one";
        break;
    }

    echo "<br/><br/>With Continue<br/>";
    switch ($variable) {
        case '20':
            echo "twenty";
        continue;
        case '21':
            echo "twenty one";
        continue;
    }
?>

当我执行上面的代码时,我得到了以下输出

Normal
twenty

With Continue
twenty

如何?

使用break语句

Break statement导致代码执行从块中出来并执行下一个语句,因为switch语句只执行一个case语句并退出switch块而不执行其他case块。

继续声明的工作

在循环的情况下,

Continue statement将导致循环停止执行当前迭代的循环并转到循环的下一次迭代(如果存在)但是在switch语句的情况下它被认为是循环语句但是没有导致退出切换语句的下一次迭代。

我们可以使用没有break语句的switch语句,就像这样

<?php
    $variable = 20;
    echo "Normal";
    switch ($variable) {
        case '19':
            echo "<br/>Nineteen";
        case '20':
            echo "<br/>twenty";
        case '21':
            echo "<br/>twenty one";
        case '23':
            echo "<br/>twenty three";
    }
?>

上述代码的输出将是

Normal
twenty
twenty one
twenty three

即。在找到第一个匹配的情况之后执行所有case语句。