本文作者:心月

php中isset()、isnull()和empty()三个函数的区别

心月IT博客 2020-01-07
php中isset()、isnull()和empty()三个函数的区别摘要:在php中经常会用isset()、isnull()和empty()三个函数来做if判断,那这三个函数到底有什么不同呢?

        在php中经常会用isset()、is_null()和empty()三个函数来做if判断,那这三个函数到底有什么不同呢?

        下面通过官方文档对这三个函数的解释来说说他们的区别(PHP版本:7.3.4nts)

一、isset()函数

函数形式:

isset ( mixed $var [, mixed $... ] ) : bool

函数说明:

        检测变量是否设置,并且不是 NULL。

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

        如果一次传入多个参数,那么 isset() 只有在全部参数都以被设置时返回 TRUE 计算过程从左至右,中途遇到没有设置的变量时就会立即停止。

返回值:

        如果 var 存在并且值不是 NULL 则返回 TRUE,否则返回 FALSE。

        从它的函数使用形式来看,它可以同时对多个变量进行检查,至于结果,请看案例:

isset()函数检测变量是否存在

        在正常情况下,使用未定义的变量是会报错的,但这里并没有报错。

        单个变量检查应该没什么疑问,但是同时检测多个变量时,从案例可以发现,只有当检测的所有变量都存在且不为NULL时才会返回TRUE,否则返回FALSE。


二、is_null() 函数

函数形式:

is_null ( mixed $var ) : bool

函数说明:

        is_null — 检测变量是否为 NULL。

        如果 var 是 null 则返回 TRUE,否则返回 FALSE。

        查看 NULL 类型获知变量什么时候被认为是 NULL,而什么时候不是。

        从函数使用形式上来看,is_null() 一次只能检测一个变量,请看示例截图:

is_null()检测变量的值是否为NULL

        从示例结果来看,is_null() 检测未定义的变量也不报错,并且返回TRUE,当变量已定义并且值不为空时,返回 false,与isset() 正好相反。

        当变量定义了,但没有明确指定变量的值为NULL时,此时即便变量没有值,但任然返回了false


三、empty() 函数

函数形式:

empty ( mixed $var ) : bool

函数说明:

        判断一个变量是否被认为是空的。当一个变量并不存在,或者它的值等同于FALSE,那么它会被认为不存在。如果变量不存在的话,empty()并不会产生警告。这意味着 empty() 本质上与 !isset($var) || $var == false 等价。

返回值:

        当var存在,并且是一个非空非零的值时返回 FALSE 否则返回 TRUE.

        以下的东西被认为是空的:

"" (空字符串)
0 (作为整数的0)
0.0 (作为浮点数的0)
"0" (作为字符串的0)
NULL
FALSE
array() (一个空数组)
$var; (一个声明了,但是没有值的变量)

        empty()函数检测的同样是一个变量,使用示例:

empty()函数检测变量是否为空

        从截图中可以发现,当变量为空字符串时,is_null 返回的是 false,empty() 返回的是 true。

is_null()函数和empty()函数对比

【对比总结】

        ①对于检测不存在的变量,三个函数都不会产生警告和其他错误。

        ②isset()可以同时检测多个变量,检测的变量之间为‘并’关系:只有所有变量都存在且值不为 NULL,返回值才会TRUE。

        ③is_null(),检测空字符串时返回TRUE。

        ④empty() 当被判断变量存在,并且是一个非空非零的值时返回 FALSE 否则返回 TRUE。

        ⑤isset()检测单个变量,只在变量未被定义或者指定变量的值为NULL两种情况下返回FALSE。

QQ截图20200107180735.jpg

文章版权及转载声明:

本文由 心月IT技术博客 博主整理于 2020-01-07
若转载请注明原文及出处:https://www.xinyueseo.com/other/589.html

分享到:
赞(
发表评论
快捷输入:

验证码

    评论列表 (有 0 条评论,人围观)参与讨论