PHP中 empty() 和 isset() 的区别介绍

 更新时间:2021年12月01日 16:03:53   作者:幽篁晓筑  
作为PHP中经常用来判断变量是否为空的函数:empty()和isset() ,二者其实在很多方面还是存在区别的,本文将为大家详细介绍一下他们的区别之处,需要的朋友可以了解一下

二者共同点

都可以判定一个变量是否为空;

都返回boolean类型,即true或false。

二者区别

empty() 函数用于检查一个变量是否为空。当一个变量并不存在,或者它的值等同于 FALSE,那么它会被认为不存在。如果变量不存在的话,empty()并不会产生警告。

isset() 函数用于检测变量是否已设置并且非 NULL。如果已经使用 unset() 释放了一个变量之后,再通过 isset() 判断将返回 FALSE。若使用 isset() 测试一个被设置成 NULL 的变量,将返回 FALSE。同时要注意的是 null 字符("\0")并不等同于 PHP 的 NULL 常量。

对于 0、false、空字符串、空数组的判断上,empty() 可以识别为空,isset() 则不能识别。

1、对于未设置的变量的判断

// 对于未设置的变量的判断
if (empty($a)) {
    echo "empty:变量为空" . "<br>";
} else {
    echo "empty:变量不为空" . "<br>";
}
if (isset($a)) {
     echo "isset:变量已设置且不为空" . "<br>";
} else {
    echo "isset:变量未设置或变量为空" . "<br>";
}
##结果
empty:变量为空
isset:变量未设置或变量为空

2、对于 "" (空字符串) 的判断

// 对于 "" (空字符串) 的判断
$a = "";
if (empty($a)) {
    echo "empty:变量为空" . "<br>";
} else {
    echo "empty:变量不为空" . "<br>";
}
if (isset($a)) {
    echo "isset:变量已设置且不为空" . "<br>";
} else {
    echo "isset:变量未设置或变量为空" . "<br>";
}
##结果
empty:变量为空
isset:变量已设置且不为空

3、对于 0 (作为整数的0) 的判断

// 对于 0 (作为整数的0) 的判断
$a = 0;
if (empty($a)) {
    echo "empty:变量为空" . "<br>";
} else {
    echo "empty:变量不为空" . "<br>";
}
if (isset($a)) {
    echo "isset:变量已设置且不为空" . "<br>";
} else {
    echo "isset:变量未设置或变量为空" . "<br>";
}
##结果
empty:变量为空
isset:变量已设置且不为空

4、对于 0.0 (作为浮点数的0) 的判断

// 对于 0.0 (作为浮点数的0) 的判断
$a = 0.0;
if (empty($a)) {
    echo "empty:变量为空" . "<br>";
} else {
    echo "empty:变量不为空" . "<br>";
}
if (isset($a)) {
    echo "isset:变量已设置且不为空" . "<br>";
} else {
    echo "isset:变量未设置或变量为空" . "<br>";
}
##结果
empty:变量为空
isset:变量已设置且不为空

5、对于 "0" (作为字符串的0) 的判断

// 对于 "0" (作为字符串的0) 的判断
$a = "0";
if (empty($a)) {
    echo "empty:变量为空" . "<br>";
} else {
    echo "empty:变量不为空" . "<br>";
}
if (isset($a)) {
    echo "isset:变量已设置且不为空" . "<br>";
} else {
    echo "isset:变量未设置或变量为空" . "<br>";
}
##结果
empty:变量为空
isset:变量已设置且不为空

6、对于 NULL 的判断

// 对于 NULL 的判断
$a = null;
if (empty($a)) {
    echo "empty:变量为空" . "<br>";
} else {
    echo "empty:变量不为空" . "<br>";
}
if (isset($a)) {
    echo "isset:变量已设置且不为空" . "<br>";
} else {
    echo "isset:变量未设置或变量为空" . "<br>";
}
##结果
empty:变量为空
isset:变量未设置或变量为空

7、对于 FALSE 的判断

// 对于 FALSE 的判断
$a = false;
if (empty($a)) {
    echo "empty:变量为空" . "<br>";
} else {
    echo "empty:变量不为空" . "<br>";
}
if (isset($a)) {
    echo "isset:变量已设置且不为空" . "<br>";
} else {
    echo "isset:变量未设置或变量为空" . "<br>";
}
##结果
empty:变量为空
isset:变量已设置且不为空

8、对于 array() (一个空数组) 的判断 

// 对于 array() (一个空数组) 的判断
$a = array();
if (empty($a)) {
    echo "empty:变量为空" . "<br>";
} else {
    echo "empty:变量不为空" . "<br>";
}
if (isset($a)) {
    echo "isset:变量已设置且不为空" . "<br>";
} else {
    echo "isset:变量未设置或变量为空" . "<br>";
}
##结果
empty:变量为空
isset:变量已设置且不为空

相关文章

  • PHP之uniqid()函数用法

    PHP之uniqid()函数用法

    这篇文章主要介绍了PHP中uniqid()函数的用法,包括了函数的基本用法与应用分析,是非常实用的技巧,需要的朋友可以参考下
    2014-11-11
  • PHP面向对象程序设计之对象的遍历操作示例

    PHP面向对象程序设计之对象的遍历操作示例

    这篇文章主要介绍了PHP面向对象程序设计之对象的遍历操作,结合具体实例形式分析了php面向对象程序设计中对象属性遍历的相关操作技巧与注意事项,需要的朋友可以参考下
    2019-06-06
  • PHP实现链式操作的三种方法详解

    PHP实现链式操作的三种方法详解

    这篇文章主要介绍了PHP实现链式操作的三种方法,结合实例形式分析了php链式操作的相关实现技巧与使用注意事项,需要的朋友可以参考下
    2017-11-11
  • PHP获取数组最大值下标的方法

    PHP获取数组最大值下标的方法

    这篇文章主要介绍了PHP获取数组最大值下标的方法,涉及php中max及array_search等函数操作数组的相关技巧,需要的朋友可以参考下
    2015-05-05
  • PHP基于SPL实现的迭代器模式示例

    PHP基于SPL实现的迭代器模式示例

    这篇文章主要介绍了PHP基于SPL实现的迭代器模式,简单描述了迭代器模式的概念、原理并结合实例形式分析了php使用SPL实现迭代器模式的相关操作技巧与注意事项,需要的朋友可以参考下
    2018-04-04
  • PHP数字前补0的自带函数sprintf 和number_format的用法(详解)

    PHP数字前补0的自带函数sprintf 和number_format的用法(详解)

    下面小编就为大家带来一篇PHP数字前补0的自带函数sprintf 和number_format的用法(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-02-02
  • PHP实现的Redis操作通用类示例

    PHP实现的Redis操作通用类示例

    这篇文章主要介绍了PHP实现的Redis操作通用类,结合实例形式分析了php实现的redis连接、队列、集合、hash表、事务等相关操作封装技巧,需要的朋友可以参考下
    2018-06-06
  • PHP排序算法之冒泡排序(Bubble Sort)实现方法详解

    PHP排序算法之冒泡排序(Bubble Sort)实现方法详解

    这篇文章主要介绍了PHP排序算法之冒泡排序(Bubble Sort)实现方法,参照大话数据结构中的算法,结合实例形式较为详细的分析了冒泡排序的原理与相关实现技巧,需要的朋友可以参考下
    2018-04-04
  • 基于PHP+Redis实现分布式锁

    基于PHP+Redis实现分布式锁

    在高并发、分布式系统环境下,为了保证资源在同一时间只能被一个进程访问(例如数据库操作、文件读写等),分布式锁是一种常用的解决策略,本文给大家介绍了基于PHP+Redis实现分布式锁,需要的朋友可以参考下
    2024-03-03
  • php知道与问问的采集插件代码

    php知道与问问的采集插件代码

    看过一个百度小偷的网站也达到了pr6。收录十万多!! 在经过 荐礼啦 四十天的实践之后 发现百度对这个确实挺友好的。
    2010-10-10

最新评论