我应该在 switch 语句中使用 continue 吗?

我注意到你确实可以在switch语句中使用关键字,但是在PHP上它没有达到我的预期。continue

如果它在PHP中失败,谁知道它还有多少其他语言失败呢?如果我经常在语言之间切换,如果代码的行为不像我期望的那样,这可能是一个问题。

那么,我应该避免在 switch 语句中使用吗?continue

PHP (5.2.17) 失败:

for($p = 0; $p < 8; $p++){
    switch($p){
        case 5:
            print"($p)";
            continue;
            print"*"; // just for testing...
        break;
        case 6:
            print"($p)";
            continue;
            print"*";
        break;
    }
    print"$p\r\n";
}
/*
Output:
0
1
2
3
4
(5)5
(6)6
7
*/

C++似乎按预期工作(跳转到 for 循环的末尾):

for(int p = 0; p < 8; p++){
    switch(p){
        case 5:
            cout << "(" << p << ")";
            continue;
            cout << "*"; // just for testing...
        break;
        case 6:
            cout << "(" << p << ")";
            continue;
            cout << "*";
        break;
    }
    cout << p << "\r\n";
}
/*
Output:
0
1
2
3
4
(5)(6)7
*/

答案 1

尝试使用 以继续到围绕 switch 语句的循环的下一次迭代。continue 2

编辑:

    $foo = 'Hello';

    for ($p = 0; $p < 8; $p++) {
         switch($p) {
             case 3:
                 if ($foo === 'Hello') {
                     echo $foo;
                     break;
                 } else {
                      continue 2;
                 }

             default:
                 echo "Sleeping...<br>";
                 continue 2;

         }

         echo "World!";
         break;
    }

//This will print: Sleeping... Sleeping... Sleeping... Hello World!


答案 2

PHP 7.3 或更高版本:

用于中断语句已被弃用,并且将触发警告。continueswitch

要退出语句,请使用 。switchbreak

要继续进行围绕当前语句的循环的下一次迭代,请使用 。switchcontinue 2

PHP 7.2 或更早版本:

continue并且可以在 PHP 的语句中互换使用。breakswitch


推荐