为什么相应的语句不执行,即使回声空($位置)打印出1
-
19-09-2019 - |
题
echo empty($location);
switch($location){
case (empty($location)):
expression 1;
break;
case ($location%10000==0):
expression 2;
break;
case ($location%100==0):
expression 3;
break;
default:
expression 4;
break;
}
当我回声空($位置),它打印出1,为什么是表达式1不执行?
解决方案
您没有使用switch语句正常。他们的工作方式是针对初始switch
值每种情况值进行比较。
在你的情况,让我们假装$location = null
;
echo empty($location); // true: null is considered empty.
switch ($location) {
case empty($location) : // this performs the check:
// $location == empty($location)
// null == true ==> false
所以这就是为什么它不跑..
我建议坚持在这种情况下if .. else
。
其他提示
在empty
函数返回1或0 http://uk3.php.net/empty <的一个布尔值/ A>
尽管switch / case
语句检查变量是否持有一定的值,并执行根据所表达
在你的情况下,expression 1
应当如果$location==1
的值(您有效请求,当键入switch($location)
)执行时,
所以你的上面的代码的逻辑是:
如果$位置== 1,执行表达式1,点击 如果$位置%10000 == 0,执行表达式2,点击 等等
是$location==1
的值?
一个switch
语句是不一样的作为if/else
语句。 switch语句都在寻找特定的值。如果它发现在给定的case
语句中指定的值时,它运行case
语句后的代码
在以下代码:
switch($x)
case 1:
// some stuff
break;
case 2:
// some other stuff
break;
default:
// some more stuff
break;
这是代码的等效:
if($x == 1){
// some stuff
}
elseif($x == 2){
// some other stuff
}
else{
// some more stuff
}
基本上,switch
语句是在那里你检查单个变量的对抗一堆可能性平等if/elseif/else
块的快捷方式。
由于empty()
返回0或1,如果是case
1的第一$location
将运行(如果$location
是空的)或0(如果$location
不为空)。这几乎就像你写了以下内容:
elseif($location == empty($location)){ ...
有意义吗?而是采用了switch
语句,你可能希望以下内容:
if(empty($location)){
// ...
}
elseif($location % 10000 == 0){
// ...
}
// ...
不隶属于 StackOverflow