是否有一种方法使用'OR'操作符或等价的PHP开关?
例如,这样的东西:
switch ($value) {
case 1 || 2:
echo 'the value is either 1 or 2';
break;
}
是否有一种方法使用'OR'操作符或等价的PHP开关?
例如,这样的东西:
switch ($value) {
case 1 || 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
$go = $_REQUEST['go'];
?>
<?php if ($go == 'general_information'){?>
<div>
echo "hello";
}?>
而不是使用不适合PHP的函数,尤其是在HTML中使用PHP时。
switch ($value)
{
case 1:
case 2:
echo "the value is either 1 or 2.";
break;
}
这就是所谓的“穿过”案例块。这个术语存在于大多数实现switch语句的语言中。
我不会转发其他答案,因为它们都是正确的,但我只想补充一点,你不能对更“复杂”的语句使用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 ($your_variable)
{
case 1:
case 2:
echo "the value is either 1 or 2.";
break;
}
解释
就像你想要执行单个语句的值一样,你可以把它放在没有break的地方,直到或除非找到break。它将继续执行代码,如果发现了break,它将从switch case中出来。
如果你必须使用||开关,那么你可以尝试:
$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;
}