PHP开关语法

PHP开关语法,php,switch-statement,case,Php,Switch Statement,Case,我是一个PHP的新手,正在尝试弄清楚切换语法。 我知道如何进行如下案例陈述: $numbr = 2; switch ($numbr) { case 2: echo "numbr is equal to 2"; break; case 1: echo "numbr is 1"; break; } 但是如果我用这个代替(检查一个大于1的数字),它就会中断。我做错了什么 $numbr = 2; switch ($numbr) { case >

我是一个PHP的新手,正在尝试弄清楚切换语法。 我知道如何进行如下案例陈述:

$numbr = 2;
switch ($numbr) {
  case 2:
    echo "numbr is equal to 2";
    break;

   case 1:
     echo "numbr is 1";
     break;
}
但是如果我用这个代替(检查一个大于1的数字),它就会中断。我做错了什么

$numbr = 2;
switch ($numbr) {
  case >1:
    echo "numbr is greater than 1";
    break;

  case 1:
  echo "numbr is 1";
    break;
}
在这些情况下,语句不适合使用,相反,您应该使用

将一个值与许多其他值进行比较时,开关最有用,而不是将一个值与数学表达式或逻辑进行比较


在可能的情况下,使用switch语句比使用if语句更好,因为switch语句只计算一次,而如果对每个
if()

语句进行计算,则不能将其作为一种情况,必须有一个值

一个好的解决方案可能是这个,但仅适用于正值:

$numbr = 2;
switch ($numbr) {
  case 0:
    break;

  case 1:
  echo "numbr is 1";
    break;

  default:
    echo "numbr is greater than 1";
    break;
}

如果你还想处理负值,你需要像其他人说的那样使用If/else,我想
case>1:
甚至是一个语法错误。你不能用开关来实现这一点。每个“案例”都是离散的,不像“>1”那样是相对的。这里似乎需要一个if/else而不是一个开关。这个有效-case$numbr>1:从技术上讲,
case
可以有一个布尔条件,如
case$numbr>1
,但这非常难看和混乱。这最好表示为
if/else if/else
案例$numbr>1:
仅在这种特殊情况下有效。谢谢。似乎这个开关并不意味着有太多的“逻辑”,而if/else做了更多的测试?@ScottPlude完全正确!你也可以阅读我在答案中的链接。请务必勾选对您帮助最大的答案旁边的复选标记,因为这将为您和回答者赢得一点声誉,并向未来的访问者展示您选择的最有帮助的答案。谢谢!我真的很感谢您的时间,我保证在发布我的问题之前,我花了一个多小时试图弄清楚它。@ScottPlude没问题!有时候,人们缺少合适的搜索词来找到问题的答案,只需要朝着正确的方向稍微推动一下。我很高兴能帮您解决这个问题。注意:如果您提供的开关的数字小于0,它也会回显“numbr大于1”。(为此使用开关确实不是一个好主意)你是对的,我只是想给他一个解决方案,以满足他的选择,但如果/否则它显然更好。编辑一点,只是为了表明你所说的:)
$numbr = 2;
switch ($numbr) {
  case 0:
    break;

  case 1:
  echo "numbr is 1";
    break;

  default:
    echo "numbr is greater than 1";
    break;
}