PHP empty、isset、isnull的区别
发布日期:2025-05-02 04:26:35 浏览次数:14 分类:精选文章

本文共 1701 字,大约阅读时间需要 5 分钟。

empty(), isset(), is_null() - PHP 变量空检测函数解析

在PHP编程中,判断变量是否为空是一个常见操作。PHP 提供了几个内置函数来实现这一功能,包括empty(), isset(), 和is_null()。这些函数虽然有相似之处,但在具体用途和行为上有所不同。本文将详细解析这三个函数的特点和使用场景。

1. empty() - 判断变量是否为空或非零值

empty() 函数用于检查变量是否为空或非零。它会将以下情况视为"空":

  • 空字符串 ""
  • 0
  • "0"
  • NULL
  • FALSE
  • 空数组 array()
  • 未定义变量
  • 没有属性的对象

需要注意的是,如果变量是空(如上述情况),empty() 会返回 TRUE;否则返回 FALSE。例如:

<?php
$var = null;
echo empty($var); // 输出 TRUE
$var = 0;
echo empty($var); // 输出 TRUE
$var = "";
echo empty($var); // 输出 TRUE
<?>

2. isset() - 检查变量是否存在且不为 NULL

isset() 函数用于判断变量是否存在(即变量是否被定义)并且其值不为 NULL。它与 empty() 有个关键区别:

  • isset() 会返回 FALSE 当变量不存在或值为 NULL 时。
  • 它不会报错,即使变量未定义。

例如:

<?php
$var; // 未定义变量
echo isset($var); // 输出 FALSE
$var = null;
echo isset($var); // 输出 FALSE
$var = "test";
echo isset($var); // 输出 TRUE
<?>

3. is_null() - 检查变量是否为 NULL

is_null() 函数专门用于检测变量是否为 NULL。如果变量值为 NULL,函数返回 TRUE;否则返回 FALSE。需要注意的是,is_null() 只能接受变量或表达式作为参数,传入非变量(如字符串或数字)会导致错误。

<?php
$var = null;
echo is_null($var); // 输出 TRUE
$var = 0;
echo is_null($var); // 输出 FALSE
<?>

如果尝试传入未定义的变量给 is_null(),会产生一个错误:

<?php
echo is_null($undefinedVar); // 会产生一个错误
<?>

使用建议

在实际编码中,可以根据具体需求选择合适的函数:

  • 如果需要检查变量是否为空(包括 NULL),建议使用 empty()。
  • 如果需要区分变量是否存在或是否为 NULL,使用 isset()。
  • 如果需要严格检查变量是否为 NULL,使用 is_null()。

本文内容转载自:我的技术博客

上一篇:ReferenceQueue的使用
下一篇:php echo 输出 锘?... 乱码问题

发表评论

最新留言

表示我来过!
[***.240.166.169]2026年06月16日 06时44分03秒