我们在做判断的时候经常用到is_null、is_bool、empty、is_set等判断函数,但是这么多的判断函数到底用哪一个,他们之间有什么区别吗,可能很多人php老鸟说到这里也有点含糊,现在我们就一一来讨论它们。
is_null、is_bool:什么时候用这样的函数呢?is_null,is_bool,这里的is我么可以解释为“是不是”,是不是null,是不是bool呢?这样我么就容易理解这样的函数了,因此我们只需要明白nill的定义是什么,bool的定义是什么,下面的这些情况是被php看作是null的:
1:被赋值为 NULL
如:
$a =NULL; echo is_null($a); //output 1
2:尚未被赋值
如:
$a;
echo is_null($a); //output 1
3:被 unset()
如:
$a =”string”;
unset($a);
echo is_null($a)//output 1
上面的这三种情况是被php认为是null的,所以就会输出真了1
为bool的情况就只有一种,就是当变量的值是true或false,不区分大小写
如:
$a =true;
echo is_bool($a);//output 1
注意:如果所给的变量不是布尔类型,那么什么也不会输出,只有是布尔类型的时候才会输出true,仅此一个值。如果$a的值是0或者1,他们不是布尔类型,什么也不会输出,不要混淆了这点。
除了is_null is_bool 外还有很多类似的函数 is_float is_int is_string 等函数,分析和上面分析相同。
empty:
empty的用法相信大家都很熟悉,下面说下,什么情况下empty($var)会输出true
1:变量的值为空 $var = “”;
2:变量的值为字符串0或者数字0 $var = 0 ; 或者$var =”0″
3:变量的值为flase $var= flase;
4:凡是为NULL的 都为空 为null的情况我上面已经讲过了 这里不再重复
5:空数组 $arr =array();
6:变量只定义不赋值 $var;
如果满足上面的一条那么empty就会输出true,empty在php中很重要,它对于我们程序的严谨性多了一层保证。
isset
很多人对于isset和empty的区别不是很明白,或者比较模糊,其实empty的作用能力比isset强,怎么这样说呢?假如有一个变量,我们前面没有定义,就直接来使用
isset($var);//there is a quertion here!
empty($var);//output 1
isset经常用于判断unset的变量,如果一个变量被unset了,那么可以用isset来判断
很多细节问题 还需要修改.