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

例如,这样的东西:

switch ($value) {

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

当前回答

如果你必须使用||开关,那么你可以尝试:

$v = 1;
switch (true) {
    case ($v == 1 || $v == 2):
        echo 'the value is either 1 or 2';
        break;
}

如果不是,你更喜欢的解决方案是

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

问题是这两种方法在处理大型案件时效率都不高。想象一下,从1到100,这是完美的

$r1 = range(1, 100);
$r2 = range(100, 200);
$v = 76;
switch (true) {
    case in_array($v, $r1) :
        echo 'the value is in range 1 to 100';
        break;
    case in_array($v, $r2) :
        echo 'the value is in range 100 to 200';
        break;
}

其他回答

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中出来。

匹配表达式(PHP 8)

PHP 8引入了一个新的匹配表达式,它与switch类似,但语法更短,区别如下:

不需要break语句 使用逗号组合条件 返回一个值 具有严格的类型比较 要求比较是详尽的(如果没有找到匹配,UnhandledMatchError将被抛出)

例子:

match ($value) {
  0 => '0',
  1, 2 => "1 or 2",
  default => "3",
}

请尝试本文中的以下示例:http://phpswitch.com/

可能的切换案例:

(i).简单的switch语句

switch语句是奇妙而神奇的。它是语言的一部分,允许您在值的不同选项之间进行选择,并根据设置的值运行不同的代码段。

每个可能的选项都由switch语句中的大小写给出。

例子:

switch($bar)
{
    case 4:
        echo "This is not the number you're looking for.\n";
        $foo = 92;
}

(ii).分隔代码块

switch的主要警告是,每个case都会运行到下一个case,除非你用break停止它。如果将上面的简单情况扩展到情况5:

例子:

case 4:
    echo "This is not the number you're looking for.\n";
    $foo = 92;
    break;

case 5:
    echo "A copy of Ringworld is on its way to you!\n";
    $foo = 34;
    break;

(iii).对多种情况使用过渡

因为switch会一直运行代码,直到它找到一个断点,所以我们很容易就可以采用fallthrough的概念,在多个情况下运行相同的代码:

例子:

案例2:

case 3:
case 4:
    echo "This is not the number you're looking for.\n";
    $foo = 92;
    break;

case 5:
    echo "A copy of Ringworld is on its way to you!\n";
    $foo = 34;
    break;

(iv).高级切换:条件情况

PHP的开关不仅允许您打开特定变量的值:您可以使用任何表达式作为case之一,只要它为case提供了要使用的值。举个例子,下面是一个使用switch编写的简单验证器:

例子:

switch(true)
{
    case (strlen($foo) > 30):
        $error = "The value provided is too long.";
    $valid = false;
    break;

    case (!preg_match('/^[A-Z0-9]+$/i', $foo)):
        $error = "The value must be alphanumeric.";
    $valid = false;
    break;

    default:
    $valid = true;
    break;
}

我想这也许能帮你解决问题。

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