【问题标题】:PHP - Difference between break and continue in switch casePHP - 在切换情况下中断和继续之间的区别
【发布时间】:2016-03-25 12:25:20
【问题描述】:

两者有什么区别

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

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

还有这个

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

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

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

【问题讨论】:

  • 阅读continue手册中的注释,或者只是整件事..
  • 如果你想让代码在case匹配超过1个值时执行,你仍然使用"break"; case "value1": and under it) case "value2": then under that -- 要执行的代码

标签: php switch-statement break continue


【解决方案1】:

这是 PHP 的一种特殊情况,因为正如 official documentation 所述:

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

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

【讨论】:

    【解决方案2】:

    在 PHP 中,上述两个代码的工作方式相同。这里breakcontinue 语句阻止控制转到下一个case。那就是continue 的行为就像这里的break。 switch 也只打算执行一次。这不是一个循环。因此continue 在这里不相关。

    注意:如果有循环包围这个switch 语句,那么结果会有所不同。

    【讨论】:

      【解决方案3】:

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

      <?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 语句的工作

      Continue 语句的工作

      Continue statement 在循环的情况下将导致循环停止执行循环的当前迭代并继续循环的下一次迭代(如果存在)但在 switch 语句的情况下它被视为循环语句但没有下一个导致退出 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 之后执行所有 case 语句。

      【讨论】:

      • 您应该更新您的答案,因为官方文档指出: 在 PHP 中,switch 语句被视为用于继续的循环结构。 continue 的行为类似于 break(当没有传递参数时)。
      猜你喜欢
      • 1970-01-01
      • 2013-05-28
      • 1970-01-01
      • 1970-01-01
      • 2018-10-09
      • 2016-07-10
      • 1970-01-01
      • 2014-05-25
      • 1970-01-01
      相关资源
      最近更新 更多