PHP - is_null() 函数


PHP 将 NULL 定义为其特殊数据类型之一。它表示尚未为某个变量分配任何特定数据类型的值。它是 PHP 的内置常量,用于表示故意缺少任何对象或值。可以使用 unset() 函数将变量显式分配为 NULL 或将其值设置为 null

is_null() 函数

PHP 提供一个布尔函数 is_null() 来检查变量是否确实是 NULL 类型。


 is_null(mixed $value): bool

示例 1

如果任何变量被显式分配为 NULL,则 is_null() 函数显然返回 true


<?php
   $x = NULL;
   echo "变量 \$x 为null? ";
   var_dump(is_null($x));
?>

它将产生以下输出 -

变量 $x 为null? bool(true)

示例 2

如果未设置具有特定值的变量,则 is_null() 函数也会返回 true,但会发出警告


<?php
   $x = "Hello";
   unset($x);
   echo "变量 \$x 为null?\n";
   var_dump(is_null($x));
?>

它将产生以下输出 -

变量 $x 为null?
bool(true)

PHP Warning:  Undefined variable $x in /home/root/www.qikepu.com/main.php on line 5

示例 3

同样,如果只声明一个变量,而不为其分配任何值,则 is_null() 函数将返回 true,并带有警告 -


<?php
   $y;
   echo "变量 \$y 为null?\n";
   var_dump(is_null($y));
?>

它将产生以下输出 -

变量 $y 为null?
bool(true)
Warning: Undefined variable $y in hello.php on line 9

示例 4

您还可以使用相等运算符 (==) 来检查变量是否为 NULL


<?php
   $x = NULL;
   if ($x === NULL) {
      echo '$x 为 NULL';
   } else {
      echo '$x 不为 NULL';
   }
?>

将产生以下输出 -

$x 为 NULL

示例 5

null 字符串 “” 不被视为等于 NULL。因此,is_null() 函数以及 “==” 运算符返回 false。请看下面的例子 -


<?php
   $y = "";
   if ($y === NULL) {
      echo '$y 为 NULL';
   } else {
      echo '$y 不为 NULL';
   }
   echo "$y 为 null?\n";
   var_dump(is_null($y));
?>

它将产生以下输出 -

$y 不为 NULL 为 null?
bool(false)

PHP 与 is_null() 函数相关的另外两个函数是 isset() 函数和 empty() 函数。

isset() 函数

isset() 函数确定变量是否已声明并且不同于 NULL


 isset(mixed $var, mixed ...$vars): bool

例子

分配了 NULL 的变量被视为未设置。


<?php
   $x = NULL;
   echo '$x 被设置? ';
   var_dump(isset($x));
?>

它将产生以下输出 -

$x 被设置? bool(false)

注意:空字符 (“\0”) 不等同于 PHP 空常量。

empty() 函数

empty() 函数检查变量是否被视为空变量。如果变量不存在或其值为 NULL,则认为该变量为空。如果变量不存在,则 empty() 不会生成警告。

示例 1

请看下面的例子 -


<?php
   $x = NULL;
   echo '$x 是空的? ';
   var_dump(empty($x));
   $y;
   echo '$y 是空的? ';
   var_dump(empty($y));
?>

将产生以下输出 -

$x 是空的? bool(true)
$y 是空的? bool(true)

示例 2

如果变量设置为 “0”、NULL 根本未设置,则 empty() 函数返回 true


<?php
   $var = 0;
   if (empty($var)) {
      echo '$var为0、空或根本未设置';
   }
?>

它将产生以下输出 -

$var为0、空或根本未设置