PHP中isset()、is_null()、empty()的比较

在项目中经常会看到在判断中用is_set(),is_null(),empty()作为判断校验条件的,但是你知道在什么情况下用哪一种最合适吗?今天来做一下归纳总结!

首先不管三七二十一,翻一翻官方手册才是王道 ‘u’ 。

isset

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

检测变量是否已设置并且非 NULL

如果已经使用 unset() 释放了一个变量之后,它将不再是 isset()。若使用 isset() 测试一个被设置成 NULL 的变量,将返回 FALSE。同时要注意的是 null 字符("\0")并不等同于 PHP 的 NULL 常量
如果一次传入多个参数,那么 isset() 只有在全部参数都以被设置时返回 TRUE 计算过程从左至右,中途遇到没有设置的变量时就会立即停止。

这里顺便说明一下标红处的意思:
NULL 字节是变量为空 $var = ''; 变量有值,不过是空,isset()是TRUE
NULL 常量是$var=NULL; 变量没有值,没有分配存储空间,isset()是FALSE

Warning isset() 只能用于变量,因为传递任何其它参数都将造成解析错误。若想检测常量是否已设置,可使用 defined() 函数。

empty

bool empty ( mixed $var )

检查一个变量是否为空

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

Note:
在 PHP 5.5 之前,empty() 仅支持变量;任何其他东西将会导致一个解析错误。换言之,下列代码不会生效: empty(trim($name))。 作为替代,应该使用`trim($name) == false`. 没有警告会产生,哪怕变量并不存在。 这意味着 empty() 本质上与 `!isset($var) || $var == false` 等价。

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

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

这里可以看一下转换为布尔类型相关知识

is_null

bool is_null ( mixed $var )

检测变量是否为 NULL
如果 var 是 null 则返回 TRUE,否则返回 FALSE。

在下列情况下一个变量被认为是 NULL:

  • 被赋值为 NULL。
  • 尚未被赋值。
  • 被 unset()。

NULL 类型只有一个值,就是不区分大小写的常量 NULL。

总结

变量$varisset($var)empty($var)is_null($var)
666100
‘’110
array()110
0110
‘0’110
false110
null011
undefined011(with a undefined notice)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值