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
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
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)
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)
$y 是空的? bool(true)
示例 2
如果变量设置为 “0”、NULL 或根本未设置,则 empty() 函数返回 true。
<?php
$var = 0;
if (empty($var)) {
echo '$var为0、空或根本未设置';
}
?>
它将产生以下输出 -
$var为0、空或根本未设置