是否有一种方法使用'OR'操作符或等价的PHP开关?

例如,这样的东西:

switch ($value) {

    case 1 || 2:
        echo 'the value is either 1 or 2';
        break;
}

当前回答

我不会转发其他答案,因为它们都是正确的,但我只想补充一点,你不能对更“复杂”的语句使用switch,例如:测试一个值是否“大于3”,“在4和6之间”,等等。如果你需要做类似的事情,坚持使用If语句,或者如果有一个特别强烈的开关需求,那么可以使用它从后到前:

switch (true) {
    case ($value > 3) :
        // value is greater than 3
    break;
    case ($value >= 4 && $value <= 6) :
        // value is between 4 and 6
    break;
}

但如我所说,我个人会在这里使用if语句。

其他回答

我不会转发其他答案,因为它们都是正确的,但我只想补充一点,你不能对更“复杂”的语句使用switch,例如:测试一个值是否“大于3”,“在4和6之间”,等等。如果你需要做类似的事情,坚持使用If语句,或者如果有一个特别强烈的开关需求,那么可以使用它从后到前:

switch (true) {
    case ($value > 3) :
        // value is greater than 3
    break;
    case ($value >= 4 && $value <= 6) :
        // value is between 4 and 6
    break;
}

但如我所说,我个人会在这里使用if语句。

注意,你也可以使用闭包将开关的结果(使用早期返回)赋值给一个变量:

$otherVar = (static function($value) {
    switch ($value) {
        case 0:
            return 4;
        case 1:
            return 6;
        case 2:
        case 3:
            return 5;
        default:
            return null;
    }
})($i);

当然,这种方法已经过时了,因为这正是新PHP 8 match函数的目的,如_dom93 answer中所示。

Try

switch($value) {
    case 1:
    case 2:
        echo "the value is either 1 or 2";
        break;
}

我建议你按(手动)开关。

switch ($your_variable)
{
    case 1:
    case 2:
        echo "the value is either 1 or 2.";
    break;
}

解释

就像你想要执行单个语句的值一样,你可以把它放在没有break的地方,直到或除非找到break。它将继续执行代码,如果发现了break,它将从switch case中出来。

使用以下代码:

switch($a) {
    case 1:
    case 2:
        .......
        .......
        .......
        break;
}

1和2都调用该块。