看懂 PHP 的空值检查

让我们先有一些基础知识:

  • isset($x) 语言结构。检查变量是否赋值
  • empty($x) 函数。检查值是否为空
  • is_null($x) 函数。检查值是否为null
  • == 运算符。判断值是否相等
  • === 运算符。判断值和类型是否相等

只有 isset() 是必须传入变量的,其他均可传入变量、常量或字面量。

让我们先看一张取值表:

看懂 PHP 的空值检查_第1张图片
常用判空表达式参照表.png

得到以下结论:

  • unsetnull 看起来是等价的,其他任何值都是 set 的。
  • empty($x) 等价于 $x == null
  • is_null($x) 等价于 $x === null
  • false0""[] 在布尔运算时都被看做 false
  • \0 在布尔运算时竟然被看做 true

那 is_null() 与 === null 有什么区别呢?

  1. 后者更快。运算符操作比函数操作开销小,虽然在PHP源码中它们做的事情是类似的。
  2. 事实上前者判断的是:值是否属于 null 类型;后者判断的是:值是否等于 null 且属于 null 类型。当然我们不能忽略一个事实,null 类型只有 null 值。

你可能感兴趣的:(看懂 PHP 的空值检查)