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;
}
当我回显空($ location)时,它打印出1,为什么表达式1没有被执行?
答案 0 :(得分: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
。
答案 1 :(得分:0)
empty
函数返回布尔值1或0 http://uk3.php.net/empty
switch / case
语句检查变量是否包含某个值并根据该值执行表达式
在您的情况下,如果expression 1
的值(您在键入$location==1
时有效地询问了这一点),则应执行switch($location)
,
所以上面代码的逻辑是:
如果$ location == 1,执行表达式1
如果$ location%10000 == 0,则执行表达式2
等等。
是$location==1
?
答案 2 :(得分:0)
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
为空)或0(如果$location
,则第一个$location
将会运行不是空的)。这几乎就像你写了以下内容:
elseif($location == empty($location)){ ...
有意义吗?您可能需要以下内容,而不是使用switch
语句:
if(empty($location)){
// ...
}
elseif($location % 10000 == 0){
// ...
}
// ...