empty、isset、isnull的区别
1.当我们只想判断变量是否为空字符串时,如果此时有值有0存在的可能,我们用empty, 就很可能出现问题了。因为empty会把很多值判断为空,所以用的时候得注意了;empty用的时候除非能很确定排除某些值才能进行使用,这个函数理解了还是挺好用的!具体看实验!
2.isset 用的时候也是个坑,如果变量没有定义,用这个判断就是为false; 或者变量定义存在,但值为null,结果也是为false; 其他都返回为true;一般用在判断变量是否定义比较多!
3.is_null就比较专心,只对变量定义且值为null进行判断为true,如果没定义程序直接报错。
实验如下:
<?php
$test_var = array('', ' ', 0 , '0', false, 'false', 'null', null, array(), array('') );
foreach ($test_var as $key=>$value) {
if( empty($value) )
{
var_dump($key.'=>empty');
}
else
{
var_dump($key.'=>not empty');
}
}
echo empty($undefine_var) ? 'empty' : 'not empty';
var_dump('================Just Line===============');
foreach ($test_var as $key=>$value) {
if( isset($value) )
{
var_dump($key.'=>set');
}
else
{
var_dump($key.'=>not set');
}
}
echo isset($undefine_var) ? 'set' : 'not set';
var_dump('================Just Line===============');
$test = null;
echo is_null($test) ? 'null': 'not null';
// echo is_null($test_2) ? 'null': 'not null';
运行结果如下:
string '0=>empty' (length=8)
string '1=>not empty' (length=12)
string '2=>empty' (length=8)
string '3=>empty' (length=8)
string '4=>empty' (length=8)
string '5=>not empty' (length=12)
string '6=>not empty' (length=12)
string '7=>empty' (length=8)
string '8=>empty' (length=8)
string '9=>not empty' (length=12)
empty
string '================Just Line===============' (length=40)
string '0=>set' (length=6)
string '1=>set' (length=6)
string '2=>set' (length=6)
string '3=>set' (length=6)
string '4=>set' (length=6)
string '5=>set' (length=6)
string '6=>set' (length=6)
string '7=>not set' (length=10)
string '8=>set' (length=6)
string '9=>set' (length=6)
not set
string '================Just Line===============' (length=40)
null
根据实验结果
empty 会把‘’,0,‘0’,false, null, array(),还有未定义的变量判断为空
isset 会把变量未定义或者变量定义了但值为null的,判断为未设置
is_null只会把变量定义了且为null的判断为null