如何使用开关案例'或'在PHP中?

有没有什么办法在一个PHP开关中使用“OR”运算符或等价物? 例如,像这样的东西:

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

这被称为“通过”案例块。 这个术语在大多数语言中都存在,实现了switch语句。

如果您必须使用||switch那么你可以尝试:

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

如果不是,你会喜欢的解决scheme

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

问题是这两种方法在处理大案件时效率都不高。想象1100这个工作是完美的

 $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; } 

我不会重新发布其他的答案,因为它们都是正确的,但我只是补充说,你不能使用开关更复杂的语句,例如:testing一个值是否“大于3”,“在4到6之间“等等。如果你需要做这样的事情,坚持使用if语句,或者如果特别需要switch那么可以使用它回到前面:

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

但正如我所说,我会亲自if那里使用if语句。

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

可能的开关情况:

(一世)。 一个简单的switch语句

切换语句是奇妙的和魔术。 这是一种语言,允许您在不同选项之间select一个值,并根据设置的值运行不同的代码片段。

每个可能的选项都由switch语句中的一个case给出。

例如:

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

(ⅱ)。 分隔代码块

切换的主要警告是,每个案件将进入下一个,除非你停下来rest。 如果上面的简单情况扩展到案例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; 

(三)。 使用贯穿多个案件

由于交换机将继续运行代码,直到find中断为止,很容易采取贯穿的概念,并为多个案例运行相同的代码:

例如:

情况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; 

(ⅳ)。 高级切换:条件大小写

PHP的开关不仅允许你打开特定variables的值:只要它给出一个值来使用,就可以使用任何expression式作为其中的一种情况。 作为一个例子,下面是使用switch编写的一个简单的validation器:

例如:

 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; } 

我build议你通过http://php.net/manual/en/control-structures.switch.php (手动)

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

说明

就像执行单个语句的值一样,你可以把它直接或间接地放在那里,或者除非发现中断,否则它将继续执行代码,并且如果发现中断,它将从交换机案例中出来。

使用这个代码:

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

该块要求1和2。

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

最好的办法可能是如果还有请求。 而且,这可以更简单明了地使用。

例:

 <?php $go = $_REQUEST['go']; ?> <?php if ($go == 'general_information'){?> <div> echo "hello"; }?> 

而不是使用PHP不能正常工作的function,特别是当你在HTML中使用PHP时。