很多使用PHP编写程序的小伙件,都应该纠结过isset()函数与empty()函数之间到底有啥区别。这篇博文分别介绍一下 isset() 函数与 empty() 函数的用法,以及它们之间的区别。

PHP 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' => 'mochu','b' => 'feiniaomy.com');
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