有没有办法在 PHP 开关中使用“或”运算符或等效运算符?
例如,像这样:
switch ($value) {
case 1 || 2:
echo 'the value is either 1 or 2';
break;
}
有没有办法在 PHP 开关中使用“或”运算符或等效运算符?
例如,像这样:
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 语句的语言中。
如果您必须使用||
withswitch
那么您可以尝试:
$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;
}
我不会重新发布其他答案,因为它们都是正确的,但我只是补充一点,您不能将 switch 用于更“复杂”的语句,例如:测试一个值是否“大于 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
那里使用一个声明。
在本文中尝试以下示例:http: //phpswitch.com/
可能的开关情况:
(一世)。一个简单的 switch 语句
switch 语句奇妙而神奇。它是一种语言,允许您在值的不同选项之间进行选择,并根据设置的值运行不同的代码段。
每个可能的选项都由 switch 语句中的 case 给出。
例子 :
switch($bar)
{
case 4:
echo "This is not the number you're looking for.\n";
$foo = 92;
}
(二)。分隔代码块
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;
(四)。高级切换:条件案例
PHP 的开关不仅允许您打开特定变量的值:您可以使用任何表达式作为其中一种情况,只要它为要使用的情况提供值。例如,这是一个使用 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;
}
我建议你通过开关(手动)。
switch ($your_variable)
{
case 1:
case 2:
echo "the value is either 1 or 2.";
break;
}
解释
就像您要为其执行单个语句的值一样,您可以将它放在没有中断的情况下,就像直到或除非找到中断一样。它将继续执行代码,如果发现中断,它将从开关盒中出来。
PHP 8引入了一个新的match
表达式,它类似于switch
但具有更短的语法和以下区别:
break
陈述UnhandledMatchError
将抛出 a)例子:
match ($value) {
0 => '0',
1, 2 => "1 or 2",
default => "3",
}
使用此代码:
switch($a) {
case 1:
case 2:
.......
.......
.......
break;
}
块被调用为 1 和 2。
switch ($value)
{
case 1:
case 2:
echo 'the value is either 1 or 2';
break;
}
http://php.net/manual/en/control-structures.switch.php 示例
$today = date("D");
switch($today){
case "Mon":
case "Tue":
echo "Today is Tuesday or Monday. Buy some food.";
break;
case "Wed":
echo "Today is Wednesday. Visit a doctor.";
break;
case "Thu":
echo "Today is Thursday. Repair your car.";
break;
default:
echo "No information available for that day.";
break;
}
最好的方法可能是请求。此外,这可以更容易和清晰地使用。
例子:
<?php
$go = $_REQUEST['go'];
?>
<?php if ($go == 'general_information'){?>
<div>
echo "hello";
}?>
而不是使用不能很好地与 PHP 一起工作的函数,尤其是当您在 HTML 中使用 PHP 时。