【问题标题】:PHP: two values in the case of Switch?PHP:在 Switch 的情况下有两个值?
【发布时间】:2009-09-05 16:09:39
【问题描述】:

如果“car”或“ferrari”作为输入,它应该打印“car or ferrari”。我怎样才能实现它?

<?php
$car ='333';
switch($car)
{

        case car OR ferrari:
                print("car or ferrari");
                break;
        case cat:
                print("cat");
                break;
        default:
                print("default");
                break;
}
?>

【问题讨论】:

    标签: php switch-statement


    【解决方案1】:

    使用两个case 子句:

    case 'car':
    case 'ferrari':
        print("car or ferrari");
        break;
    

    explanation:

    了解switch 语句的执行方式对于避免错误非常重要。 switch 语句逐行执行(实际上是逐语句执行)。一开始,没有代码被执行。只有当case 语句的值与switch 表达式的值匹配时,PHP 才会开始执行这些语句。 PHP 继续执行语句直到 switch 块结束,或者它第一次看到 break 语句。如果你不在一个case语句列表的末尾写break语句,PHP会继续执行下一个case的语句。

    【讨论】:

    • 有趣的是,default: 案例与其他案例一样。它不需要在开关的末尾。示例:codepad.org/jNrQdM3U
    【解决方案2】:

    您可以简单地“解决”您想要平等处理的案例:

        <?php
        $auto ='333';
        switch($auto)
        {
    
        case car:
        case ferrari:
                print("car or ferrari");
                break;
        case kissa:
                print("cat");
                break;
        default:
                print("default");
                break;
        }
    

    【讨论】:

    • 你如何回应帅枪的批评?
    • 对不起,我可能来不及了,但我找不到帅枪的批评?
    【解决方案3】:
    switch($car)
    {
    
            case car:
            case ferrari:
                    print("car or ferrari");
                    break;
            case cat:
                    print("cat");
                    break;
            default:
                    print("default");
                    break;
    }
    

    在第一个 break 语句之前,案例“失败”。这也意味着在default 的情况下您不需要break

    【讨论】:

      【解决方案4】:
      switch($car) {
      case 'car':
      case 'ferrari':
          print("car or ferrari");
          break;
      case 'cat':
          print("cat");
          break;
      default:
          print("default");
          break;
      }
      

      这是利用switch() 语句的'fall-through' 属性。基本上,一个部分不会停在case,而是停在break(或其他退出函数的操作)。

      我冒昧地为开关应用了我喜欢的缩进,这使得它们只使用一个缩进级别,我认为这是合适的,因为从逻辑上讲,switch 和它的cases 都是相同的构造。因此,在 switch 中使用两个缩进级别不会传达任何有用的信息。

      【讨论】:

        【解决方案5】:

        我不知道 PHP 是否支持这个,但在 C 中,你可以这样做:

        case car:
        case ferrari:
                    print("car or ferrari");
                    break;
        

        这个想法是处理 car case 的代码将继续运行,直到遇到 break 语句。至于风格,应该避免。

        【讨论】:

          猜你喜欢
          • 2011-05-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-03-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多