【问题标题】:Is there any "Else Case" in the switch function to use?开关功能中是否有任何“Else Case”可以使用?
【发布时间】:2010-02-10 10:01:14
【问题描述】:

switch 语句由“case”组成...

但是对于所有其他情况是否有任何“其他”情况?

一直没有找到答案...

例如:

 switch ($var){
   case "x":
       do stuff;
   break;
   case "y":
       do stuff;
   break;
   else: // THIS IS WHAT I WOULD LIKE
       do stuff;
   break;
 }

【问题讨论】:

    标签: php switch-statement


    【解决方案1】:
    default:
           do stuff;
    break;
    

    通常情况下,default 子句应位于其他 case 子句的末尾,以提高可读性。

    您可能还想将代码中的break 语句重新格式化为如下所示:

     switch ($var){
       case "x":  // if $var == "x"
           do stuff;
           break;
       case "y":  // if $var == "y"
           do stuff;
           break;
       default:  // if $var != "x" && != "y"
           do stuff;
           break;
     }
    

    关于switch 声明的更多信息herehere

    【讨论】:

      【解决方案2】:

      正如丹所说,但如果有帮助,请以完整的形式......

      switch ($var) {
          case "x":
              // do stuff
              break;
          case "y":
              // do stuff
              break;
          default:
              // do "else" stuff...
      }
      

      【讨论】:

      • 但如果您不想失败,最好始终输入break
      【解决方案3】:

      正如其他人所说。尽管该默认值也可能出现在开头或中间的某个地方:

      switch (foo) 
      {
      case 0:  break;
      default: break;
      case 1:  break;
      };
      

      如果没有正当理由,你当然不应该这样做。

      【讨论】:

      • 如果你把 default 放在底部以外的任何地方,任何低于它的大小写都将被忽略。
      • @Simon:你为什么这么认为而不自己尝试?这是标准所说的: 6.4.2/5 [stmt.switch] “当 switch 语句被执行时,它的条件被评估并与每个 case 常量进行比较。[...] 如果没有 case 常量与条件匹配,并且如果有一个默认标签,控制传递给默认标签标记的语句。”
      • @Simon:我失败了​​,出于某种原因我假设是 C。但它是 PHP,它似乎是一样的:de.php.net/manual/en/control-structures.switch.php#87959
      猜你喜欢
      • 2014-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-17
      • 1970-01-01
      • 1970-01-01
      • 2019-11-03
      相关资源
      最近更新 更多