php中函数 isset(), empty(), is_null() 的区别[通俗易懂]

php中函数 isset(), empty(), is_null() 的区别

大家好,又见面了,我是全栈君。

php中函数 isset(), empty(), is_null() 的区别[通俗易懂]php中函数 isset(), empty(), is_null() 的区别[通俗易懂]

 

NULL:
当你在你的脚本中写下这样一行代码

$myvariable; //此处你想定义一个变量,但未赋值。会有Notice: Undefined variable
echo $myvariable + 3; //使用这个变量出现:Notice: Undefined variable: myvariable in

如果将其改写成:

$myvariable = NULL; 
echo $myvariable + 3; //这样就不会有问题了

所以得出在你的脚本在使用一个变量时最好赋一个默认值,如果你不想,就可以将NULL赋给变量,表示这个变量已经定义但没有值,属于NULL类型。

is_null():
bool is_null ( mixed $var )   (php.net官方文档的函数定义)
当参数满足下面三种情况时,is_null()将返回TRUE,其它的情况就是FALSE
1、它被赋值为NULL
2、它还没有赋值
3、它未定义,相当于unset(),将一个变量unset()后,不就是没有定义吗
让我们来看一些例子:

$myvar = NULL; 
var_dump(is_null($myvar)); // TRUE
$myvar1; 
var_dump(is_null($myvar1)); // TRUE Notice: Undefined variable
$num = 520;
unset($num);
var_dump(is_null($num)); //TRUE Notice: Undefined variable
var_dump(is_null($some_undefined_var)); //TRUE Notice: Undefined variable

$myvar = 0; is_null($myvar); // FALSE
$myvar = FALSE; is_null($myvar); // FALSE
$myvar = ''; is_null($myvar); // FALSE

isset():
bool isset ( mixed $var [, mixed $… ] ),参数是一个变量
检测参数已设定,并且不是NULL。如果没有设置变量,变量未赋值,或变量被设为NULL,isset()函数就返回NULL。
正好和is_null()函数相反,is_null()为TRUE的情况在isset()中就为FALSE。有意思!
如果传递多个参数,将取交集。即所有参数全部符合 isset() 时才返回 TRUE。
似乎让人感觉有点困惑,来看一些例子:

$myvar = NULL; isset($myvar); // FALSE 当一个变量被赋值为NULL时,就表示这个变量没有值
$myvar = 0; isset($myvar); // TRUE
$myvar = FALSE; isset($myvar); // TRUE
$myvar = ''; isset($myvar); // TRUE
isset($some_undefined_var); // FALSE Undefined variable

可以看出isset()着重检测一个 变量是否设置和这个变量是否有具体的值,当变量满足这两种情况时isset()返回TRUE

defined():
bool defined ( string $name )

检测是否设置常量

empty():
bool empty ( mixed $var )

判读变量是否为空。
请见上面的类型比较表empty()那一列你就明白哪些情况是空的情形了。还有其他一些函数的参照。
来看一些例子:

$myvar = NULL; empty($myvar); // TRUE
$myvar = 0; empty($myvar); // TRUE
$myvar = FALSE; empty($myvar); // TRUE
$myvar = ''; empty($myvar); // TRUE
empty($some_undefined_var); // TRUE

empty()为TRUE的情况,若变量不存在,或者变量存在且其值为””、0、”0″、NULL、FALSE、array()、var $var; 以及没有任何属性的对象,则返回 TURE。
一般如!empty()的判断,就是变量存在,且值不为””、0、”0″、NULL、FALSE、array()以及只是单纯定义一个变量$var。

原文:https://blog.csdn.net/jiaobuchong/article/details/41807011

补充:

if (isset($_GET['reply_id'] && $_GET['reply_user'])) {
    
    

报错:Fatal error: Cannot use isset() on the result of an expression (you can use "null !== expression" instead) in line 42
改为这样:
 if ( isset($_GET['reply_id'], $_GET['reply_user']) ) {
      // code here
 }

  php中函数 isset(), empty(), is_null() 的区别[通俗易懂]

当$a,$b都为true时,才为TRUE;

php中函数 isset(), empty(), is_null() 的区别[通俗易懂]

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/112171.html原文链接:https://javaforall.net

(0)
上一篇 2022年2月9日 下午4:00
下一篇 2022年2月9日 下午5:00


相关推荐

  • 事关DeepSeek,腾讯宣布重大更新!

    事关DeepSeek,腾讯宣布重大更新!

    2026年3月13日
    3
  • MLE和MAP

    MLE和MAPQ 请解释 么叫 MLE 么叫 MAP 请说明它们之间的区别 在数据量无穷多的时候 是否 MAP 趋近于 MLE 估计 最大似然估计 MLE MaximumLikel 根据数据来估计模型的参数 MLE 的目标是找出一组参数 使得模型产生出观测数据的概率最大 简单地说 MLE 就是根据观测到的数据来估计参数 数据产生的环境 观测到一堆数据 假如我们知道它是从某一种分布

    2026年3月17日
    3
  • 智谱AI概念股飙升!32B/9B系列GLM模型开源引爆市场

    智谱AI概念股飙升!32B/9B系列GLM模型开源引爆市场

    2026年3月12日
    2
  • centos 删除软链接(centos软路由)

    添加软连接软连接,为某一个文件在另外一个位置建立一个同步的连接在此处创建软连接后,访问到此处的软连接,就会定位到软连接指向的位置。相当于把一个文件夹放到了多个位置,但其实还是只有一份,并不是复制。具体用法是:ln-s源文件目标文件会针对源文件创建一个软连接(目标文件),链接到源文件。别搞反了。前面的源文件,是需要在当前位置能访问到的文件。后面的是目标文件,是新创建出来的链接。例…

    2022年4月14日
    256
  • 设置CSS透明度的方法

    设置CSS透明度的方法一 cssrgba 设置颜色透明度语法 rgba R G B A RGBA 是代表 Red 红色 Green 绿色 Blue 蓝色 和 Alpha 不透明度 三个单词的缩写 RGBA 颜色值是 RGB 颜色值的扩展 带有一个 alpha 通道 它规定了对象的不透明度 rgba 里的值的介绍 R 红色值 正整数 0 255 G 绿色值 正整数 0 255 B 蓝色值 正整数 0 255 A 透明度 取值 0 1 之间 rgba 只是单纯的可以设置颜色透明度 这样在页面的布局中有很多应用 比如说 让背景

    2026年3月16日
    2
  • Byakuren:一个 C 实现的主题色提取库「建议收藏」

    Byakuren:一个 C 实现的主题色提取库

    2022年3月1日
    49

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号