是否可以使用||在PHP中切换?

时间:2009-11-01 23:52:04

标签: php switch-statement fall-through

switch ($foo)
    {
        case 3 || 5:
           bar();
        break;

        case 2:
          apple();
        break;
    }

在上面的代码中,第一个switch语句是否有效?如果bar()的值为3或5,我希望它调用函数$foo

5 个答案:

答案 0 :(得分:24)

你应该利用switch语句的优势:

switch ($foo)
    {
        case 3:
        case 5:
           bar();
        break;

        case 2:
          apple();
        break;
    }

PHP man page有一些例子。

答案 1 :(得分:6)

我认为你需要的是:

switch ($foo)
{
    case 3:
    case 5:
       bar();
    break;

    case 2:
      apple();
    break;
}

有趣的是,我听说过Perl是(现在甚至可能已经引入)这种语法,这有点像:

if ($a == 3 || 5)

我不是那种语法的粉丝,因为我不得不写一些词法解析器,并且相信语言应该尽可能明确。但是之后,Perl已经用那些可怕的尾部ifor解决了所有这些问题,所以我怀疑它不会有问题: - )

答案 2 :(得分:5)

相反,使用switch语句的主要优点之一:

switch($foo) {
    case 3:
    case 5:
        bar();
        break;

    case 2:
        apple();
        break;
}

答案 3 :(得分:1)

是的,我认为你所拥有的相当于:

    <?php

    $foo = 5000 ;

    switch( $foo )
    {
      case true :   // Gzipp:  an '=='-style comparison is made
        echo 'first one' ; // between $foo and the value in the case
        break;             // so for values of $foo that are "truthy"
                           // you get this one all the time.

      case 2:
        echo 'second one';
        break;

      default:
        echo 'neither' ;
        break;
    }

    ?>

答案 4 :(得分:0)

不,如果你写了case 3 || 5:,那么你也可以写case True:,这肯定不是你想要的。但是,您可以将案例陈述直接放在彼此之下:

switch ($foo)
    {
        case 3:
        case 5:
           bar();
        break;

        case 2:
          apple();
        break;
    }