很多使用PHP编写程序的小伙件,都应该纠结过isset()函数与empty()函数之间到底有啥区别。这篇博文分别介绍一下 isset() 函数与 empty() 函数的用法,以及它们之间的区别。
PHP isset()函数
isset():检测变量是否设置,并且不是 NULL。成立返回true 否则返回 false;
语法:
isset(var)
参数:
var : 要检查的变量,可以是数组
例:isset()函数判断一个变量是否存在或不为null
<?php $a = 'ss'; var_dump(isset($a)); // bool(true) $b = null; var_dump(isset($b)); // bool(false) $c = 0; var_dump(isset($c)); // bool(true) $d = array(); var_dump(isset($d)); // bool(true) $e = array('1','2'); var_dump(isset($e)); // bool(true) $f = ''; var_dump(isset($f)); // bool(true) var_dump(isset($g)); // bool(false) $h = false; var_dump(isset($h)); // bool(true) ?>
通过上面多行代码的打印结果对比,不难发现。只要变量存在并且变量不为 null 那个isset() 函数返回的结果都是 true,解释变量的值为空(不是null),或 0 都会返回 true
PHP empty()函数
empty():函数用于检查一个变量是否为空,如变量存在并且非空非零的值时返回 FALSE 否则返回 TRUE。
语法:
empty(var)
参数:var 要检查的变量
注意:empty()判断变量是,即使变量不存在也不会发生警报,
例:empty()判断变量是否存
示例代码:
<?php $a = 'ss'; var_dump(empty($a)); // bool(false) $b = null; var_dump(empty($b)); // bool(true) $c = 0; var_dump(empty($c)); // bool(true) $d = array(); var_dump(empty($d)); // bool(true) $e = array('1','2'); var_dump(empty($e)); // bool(false) $f = ''; var_dump(empty($f)); // bool(true) $g = false; var_dump(empty($g)); // bool(true) var_dump(empty($h)); // bool(true) $j = '0'; var_dump(empty($j)); // bool(true) $arr = array('a' => 'cAIniao','b' => 'freexyz.cn'); var_dump(empty($arr['a'])); // bool(false) var_dump(empty($arr['c'])); // bool(true) ?>
以上代码总结说明:
1、若变量不存在则返回 TRUE
2、若变量存在且其值为""、0、"0"、NULL、、FALSE、array()、var $var; 以及没有任何属性的对象,则返回 TURE
3、若变量存在且值不为""、0、"0"、NULL、、FALSE、array()、var $var; 以及没有任何属性的对象,则返回 FALSE
4、empty() 函数也可以用来判断数组中指定的键是否存在,存在返回 FALSE,不存在返回TRUE
注意: empty() 只检测变量,检测任何非变量的东西都将导致解析错误
isset()与empty()区别总结:
1、只要变量是为“”(空字符串)或者0,或者是false和null,只要是这些值empty()函数都会返回TRUE
2、isset是判断变量是否存在,只要这个变量不是 null 或是未赋值,都会返回TRUE