PHP:Switch的两个值?

时间:2009-09-05 16:09:39

标签: php switch-statement

如果“汽车”或“法拉利”作为输入,则应打印“汽车或法拉利”。我怎样才能实现它?

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

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

5 个答案:

答案 0 :(得分:26)

使用两个case子句:

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

explanation

  

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

答案 1 :(得分:5)

你可以简单地“理解”你想要处理的案件:

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

    case car:
    case ferrari:
            print("car or ferrari");
            break;
    case kissa:
            print("cat");
            break;
    default:
            print("default");
            break;
    }

答案 2 :(得分:2)

switch($car)
{

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

在第一个break陈述之前,案件“落空”。这也意味着您在break案例中不需要default

答案 3 :(得分:1)

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中使用两个缩进级别不会传达任何有用的信息。

答案 4 :(得分:1)

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

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

这个想法是,用于处理汽车外壳的代码将一直运行,直到它达到中断语句。至于风格,应该避免。