如何使用开关案例'或'在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; }
问题是这两种方法在处理大案件时效率都不高。想象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; }
我不会重新发布其他的答案,因为它们都是正确的,但我只是补充说,你不能使用开关更复杂的语句,例如: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时。