繁体   English   中英

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

[英]PHP - Difference between break and continue in switch case

有什么不同

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

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

还有这个

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

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

这是真的不同的结果还是一样?

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

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

这是PHP的特例,因为正如官方文档所述

注意:在PHP中,switch语句被认为是用于continue的循环结构。 继续表现得像break(没有传递参数时)。 如果开关位于循环内,则继续2将继续外循环的下一次迭代。

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

这是一个简单的示例代码,包含上面提到的两种开关案例

<?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语句导致代码执行从块中出来并执行下一个语句,因为switch语句只执行一个case语句并退出switch块而不执行其他case块。

继续声明的工作

在循环的情况下继续语句将导致循环停止执行当前迭代的循环并进行循环的下一次迭代(如果存在)但是在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语句。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM