is_null()
判断变量的值是否为 null,不关心变量是否已经定义。
如果变量不存在,会触发一个警告(Notice: Undefined variable)。
单独使用 isset() 无法判断变量是否为 null,因为 isset() 对于值为 null 的变量返回的是 false,这意味着变量可能未定义也可能为 null,二者无法区分。
单独使用 is_null() 又会在变量未定义时报错。
所以我们需要先用 isset() 判断变量是否存在,接着用 is_null() 判断其是否为 null。这样就能准确区分“变量未定义”和“变量为 null”两种情况。
<?php
// 假设要检测的变量是 $var
if (isset($var)) {
// 变量已定义,判断是否为 null
if (is_null($var)) {
echo '$var 已定义且值为 null';
} else {
echo '$var 已定义且值不为 null';
}
} else {
echo '$var 未定义';
}
?>
可以将上述逻辑封装为一个函数,方便重复使用:
<?php
function isDefinedAndNull(&$var): bool {
return isset($var) && is_null($var);
}
// 示例使用
if (isDefinedAndNull($var)) {
echo '$var 已定义且为 null';
} else {
echo '$var 未定义或不为 null';
}
?>
注意这里使用了引用传递 &$var,防止变量未定义时触发 Notice。
变量未定义时直接用 is_null($var) 会产生警告。
结合使用可以避免不必要的警告,同时能准确区分变量状态。
isset() 不仅判断是否定义,还判断是否为 null。
如果只想判断变量是否存在(不考虑是否为 null),只用 isset() 即可。
通过结合 isset() 和 is_null(),可以实现对变量是否已定义且值为 null 的准确判断,避免了单独使用时的误判或警告。实际开发中,这样的判断尤其适合处理可能未初始化的变量,保证代码的健壮性。