is_null、is_bool、empty、isset的区别

我们在做判断的时候经常用到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来判断

很多细节问题 还需要修改.

你可能感兴趣的:(PHP)