一直以来都不是很确定这三个函数的区别,准确的说,是不知道这三个在一些细节上的区别。
- empty 函数简单的来说,就是判断某个变量是否为空
- isset 函数就是判断某个变量是否存在
- is_null 函数就是判断某个变量是不是null
从字面上来说的话,这三者还是比较好理解的,但是有一种情况,就是当一个变量不存在或没有定义的时候,这三者的返回值分别会是什么?
首先,isset() 一定会返回 false ,本来isset函数就是来判断变量是否存在的,这个是很好理解的。那么问题来了,不存在的变量是否为空呢?不存在的变量是否为null呢?
var_dump(isset($a));
var_dump(empty($b));
var_dump(is_null($c));
大家先想一下!
结果:
is_null($c) 会直接报Notice,因为is_null必须传已经存在的值。当然,如果用@符号屏蔽警告的话,还是会返回 true 的,就是相当于认为,没有定义就是null。empty函数也是这么认为的,没有被定义的变量,认为是空。
其实,这三者的交叉的地方就是在没有被定义的时候。理解了这点,根据字面上的意思就能使用者三个函数了。