PHP中isset,empty,is_null用法和区别

azhedashuaibi 2019-06-21

1.empty用法
bool empty ( mixed var)
如果 var 是非空或非零的值,则 empty() 返回 FALSE。换句话说,""、0、"0"、NULL、FALSE、array()、var $var; 以及没有任何属性的对象都将被认为是空的,如果 var 为空,则返回 TRUE

2.isset()
isset -- 检测变量是否设置
描述
bool isset ( mixed var [, mixed var [, ...]])
如果 var 存在则返回 TRUE,否则返回 FALSE。
如果已经使用 unset() 释放了一个变量之后,它将不再是 isset()。若使用 isset() 测试一个被设置成 NULL 的变量,将返回 FALSE。同时要注意的是一个 NULL 字节("0")并不等同于 PHP 的 NULL 常数。
如果检查一个数组中是否存在某个key,当数组中存在这个key并且对于的value不为null时返回true

注意:如果变量不存在,isset()和empty()都不会报错;is_null(),is_numeric()会报错
用来判断常量会报错,比如:null,true,false,‘’,‘123adf’,123

如何区别如下数组中 [0,'',null] 三个元素?
(1)区别0:

$a = 0;
isset($a) && is_numeric($a) === true

(2)区别''

$a = '';
empty($a) && $a=== ''

(3)区别null

$a = null;
is_null($a);    
最好使用 === NULL 这样速度更快

另外在做表单提交的时候可能经常要检测一个变量是否存在,假如$_REQUEST['status'] = 0;
使用empty($_REQUEST['status'])返回true,但是使用isset($_REQUEST['status']) 判断就不是空

(4)count();

echo count(123);    //1
echo count(null);    //0
echo count(false);    //1
echo count(true);    //1
echo count('adds');    //1
echo count(array());    //0
echo count(array(array()));    //1
count()判断对象返回也是1,判断数组是返回数组的元素个数

参考资料:http://www.laruence.com/2009/...

相关推荐