PHP的开关情况下问题
我想说$level > -100 && $level < 100
PHP的开关情况下问题
$level = 0;
switch($level){
case $level > -100:
break;
case $level < 100:
break;
default:
echo '5';
return null;
}
你可以使用switch语句是这样的。
给出的答案都不到目前为止有明确连接原题的精神,适当的开关结构。所以,备案:
switch (true) {
case (($level>-100) && ($level<100)):
echo 'in range one';
break;
case (($level>200) && ($level<300)):
echo 'in range two';
break;
default:
echo 'out of range';
}
这种使用开关绝对没有错。
你忘记了break语句吗? – 2016-08-25 15:17:46
的确是的,我做到了!谢谢,我添加了它们。 – Peter 2016-10-12 02:17:31
不,你不能。 switch
声明需要case
块中的文字。使用if语句来代替:
if(!($level > -100 && $level < 100))
{
echo '5';
return null;
}
水平怎么能小于-100和100以上? – 2010-09-05 15:06:48
meh,错误回滚。谢谢 – Femaref 2010-09-05 15:07:52
当你说switch ($level)
你已经比较$level
值。然后每个case
只能检查是否相等,你不能像你的例子那样进行比较。你必须使用一个if
语句来代替:
if ($level > -100 && $level < 100)
; // do nothing; equivalent of break in this case
else
echo '5';
就更简单了,只是否定的条件:
if ($level <= -100 || $level >= 100)
echo '5';
这是原因,人们崇尚case
作为一个出色的解决方案,以if-else
之一是关闭基础。我不喜欢语法或局限性 - if-ifelse-else
更有用。
这完全没有帮助。 – Femaref 2010-09-05 15:09:15
两者都不是“优于”对方;每个都有自己的用途。在这种情况下,“if”语句胜出。 – casablanca 2010-09-05 15:10:49
正确的工具... – Mchl 2010-09-05 15:13:51
其他答案在同一时间是正确的和不正确的。不正确,因为它有可能在PHP中做你想做的事情......将switch($level)
更改为switch(true)
并且你的示例将起作用。正确的是,这是糟糕的形式,如果其他程序员在你的代码中看到它们,他们可能会用干草叉来追赶你。它不是如何使用switch语句,并且在大多数其他语言中不会像那样工作。
我认为这很有趣。您可以将开关设置为“真”并对其进行评估这一事实显然是有意的。当你想到它时,它也是非常有意义的。我不会称之为直觉。但它似乎确实导致猛禽从天而降。 – Prospero 2010-09-05 15:52:08
我不同意switch(true)在PHP中是不好的形式。它*是真的,其他一些语言(如Java)不支持switch(true)语法。但是大量的语言*支持类似的构造(包括Perl,Groovy和Go),所以你不能说“没有人这样做,所以你也不应该”。我声称,如果使用得当,它实际上可以使PHP代码至少易于阅读,如同一连串的if/then else。 – Peter 2012-10-03 22:03:46
检查我的答案。它可以使用开关。但我必须告诉你,这不是一个很好用的Switch。 – Starx 2010-09-05 15:52:45
查看我的评论nikic的回答 – Mchl 2010-09-05 17:27:26
我没有看到建议的开关结构如何接近(($ level> -100)&&($ level Peter 2012-10-03 21:32:06