php 中empty和isset的区别

1
2
3
4
5
6
7
8
 if($order_type==1){
$whereCondition = (!empty($order_id))&&(!empty($goodsid))&&(!empty($order_type))&&(!empty($level));
}else{
$whereCondition = (!empty($order_id))&&(!empty($goodsid))&&(!empty($order_type));
}
if($whereCondition){
....
}

今天反了一个很低级的错误,如上述代码所写,第一个if是确定判断条件,判断条件必须都不空才行,而其中的一个参数order_type0,但是empty()是可以判断参数0或NULL返回true。这样虽然参数已经传了0,但是!empty()也会返回一个false,这样不管怎么样 if($whereCondition)都会是false。这时应该用isset()

1
2
3
isset(var) //判断参数是不是null,是null就返回false

如果 var 存在并且值不是 NULL 则返回 TRUE,否则返回 FALSE
1
2
3
4
5
6
7
8
9
10
11
12
empty(var) //也是判断参数是不是null,是null就返回true

以下的东西被认为是空的:
• "" (空字符串)
• 0 (作为整数的0)
• 0.0 (作为浮点数的0)
• "0" (作为字符串的0)
• NULL
• FALSE
• array() (一个空数组)
• $var; (一个声明了,但是没有值的变量)