在PHP的switch语句中,我可以使用逻辑运算符“or”吗?

3

在switch case语句中可以使用“or”或“and”吗?我想要实现以下内容:

case 4 || 5:
    echo "Hilo";
    break;

switch ($i) { case $i == 4 || $i == 5 : echo "Hilo"; break; } 这对我有用。 - LChuan
5个回答

13

不行,但你可以这样做:

case 4:
case 5:
       echo "Hilo";
       break;

请参阅PHP手册

编辑:关于AND情况:switch只检查一个变量,所以这种情况下不起作用,你可以这样做:

switch ($a) {
  case 4:
    if ($b == 5) {
      echo "Hilo";
    }
    break;
  // Other cases here
}

如果我想要case 4和另一个变量c = 5,我可以使用AND吗? - John
1
你的使用可能只需要使用if/else语句,例如 if ( $a==4 && $b==5 ) {}。这通常更简单和简洁。 - DisgruntledGoat
有些人建议不要让 case 穿透,比如 Douglas Crockford。在调试时很容易被忽略。 - alex
1
@alex,通常建议在情况4做某事并且情况5也做某事但你让4掉下来时这样做。上面的例子中,情况4本身什么也不做是非常清晰明了的。 - Erik

4

你有效地实现这一点的方式是:

CASE 4 :
CASE 5 :           
    echo "Hilo";           
    break;

这被称为带有贯穿的switch语句。来自Wikipedia:

"在C语言和类似构造的语言中,缺乏break关键字以从一个块到下一个块的程序执行贯穿性是广泛使用的。例如,如果n = 2,则第四个case语句将匹配控制变量。下一行输出“n是偶数”。程序继续通过接下来的3个case语句并到达下一行,该行输出“n是素数”。此后的break行使switch语句结束。如果用户输入多个数字,则执行默认块,生成错误消息。"


3

你可以只是简单地将这些案例堆叠在一起:

switch($something) {
   case 4:
   case 5:
       //do something
       break;
}

3

不,我认为那会被计算为 (4 || 5),始终为真,但你可以这样写:

case 4:
case 5:
    // do something
    break;

-2
switch($a) {
    case 4 || 5:
        echo 'working';
        break;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接