PHP中switch对于0的判断不准?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP中switch对于0的判断不准?相关的知识,希望对你有一定的参考价值。

$speed=0;
switch($speed)
case ($speed>=100):
echo 150;
break;
case ($speed>=0):
echo 50;
break;
case ($speed<-100):
echo -150;
break;
case ($speed<0):
echo -50;
break;
default:
echo 123123123;

echo '<br/>';
if($speed>=100)
echo 150;
else if($speed>=0)
echo 50;
else if($speed<-100)
echo -150;
else if($speed<0)
echo -50;

以上的输出结果为:
150
50
一模一样的判断,使用switch会好看一点,但是当变量=0的时候就出现了问题,case (0>=100)居然判断为真。求大神讲解下这是为毛?

参考技术A $speed = 0 ;

if ($speed >= 0)
echo 'true';


肯定返回true啊,大于等于0,是什么意思?大于跟等于,都可以为真。

case if 的条件,都是一样的。这没有错误。楼主再琢磨琢磨……同理,<=0,也是一个道理追问

你复制我写的代码运行一下就知道了,用switch判断 当变量=0时是出错的。if没有问题,我在问题里已经说的很清楚了。不明白的是为什么switch判断不行。

追答

case ($speed<-100):

确定你的代码是这样的?<-是个什么鬼?

参考技术B $speed=0;
switch(true)
case ($speed>=100):
echo 150;
break;
case ($speed>=0):
echo 50;
break;
case ($speed<-100):
echo -150;
break;
case ($speed<0):
echo -50;
break;
default:
echo 123123123;

echo '<br/>';
if($speed>=100)
echo 150;
else if($speed>=0)
echo 50;
else if($speed<-100)
echo -150;
else if($speed<0)
echo -50;

java switch语句中如何判断数值范围

不能判断。switch必须是明确的一个值,比如一个数字或者一个字符串。 参考技术A 同意楼上的。。判断数值范围用其它的。while if等。 参考技术B 判断数值范围用其它的。while if等。

以上是关于PHP中switch对于0的判断不准?的主要内容,如果未能解决你的问题,请参考以下文章

PHP丨PHP基础知识之条件语SWITCH判断「理论篇」

php语言编写switch判断成绩代码。分别输出优秀、良好、中等、及格和不及格。

对于if判断和switch选择的入门理解

php语言编写switch判断成绩代码。分别输出优秀、良好、中等、及格和不及格。

php语言编写switch判断成绩代码。分别输出优秀、良好、中等、及格和不及格。

这个PHP流程判断switch语句哪里出错了?为啥不执行default后面的语句