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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • IntelliJ idea 必备 好用 优秀 插件

    IntelliJ idea 必备 好用 优秀 插件1、AtomMaterialICons这是一个icon图片插件,有一个特别牛的功能就是可以优化idea流畅度,不知道是什么原理,现在这个插件成为了我必备插件2、FileExpander有了这个插件,有些小伙伴平时用的Jad工具就可以扔了,它能在Idea里直接打开Jar包3、GitToolBox这款插件现在我几乎离不开它。他能在项目上提示你还有多少文件没提交,远程还有多少文件没更新下来。还能在每一行代码上提示上次提交的时间。查版本提交问题的时候尤其方便4、MavenHelper

    2022年10月9日
    3
  • 【Flume NG用户指南】(1)设置

    【Flume NG用户指南】(1)设置

    2022年1月25日
    39
  • js的模块化可以怎么做_jscript和javascript的区别

    js的模块化可以怎么做_jscript和javascript的区别写了十年JS却不知道模块化为何物?

    2022年4月22日
    208
  • 计算机错误代码0X000000be,Win7系统出现蓝屏代码0x000000BE的解决方法「建议收藏」

    计算机错误代码0X000000be,Win7系统出现蓝屏代码0x000000BE的解决方法「建议收藏」蓝屏是我们日常使用电脑的时候经常会碰到的故障,这不就有很多win732位系统用户反映说电脑出现蓝屏错误代码0x000000BE,该怎么解决这样的问题呢,接下来给大家讲解一下Win7系统出现蓝屏代码0x000000BE的解决方法吧。原因分析:0x000000BE错误表示硬件设备的驱动程序试图向只读内存错误地写入数据。这个错误一般是因为硬件设备驱动程序存在BUG或安装不正确引起的。解决方法:按开机按…

    2022年10月8日
    3
  • bool型函数定义及应用

    bool型函数定义及应用 bool型函数定义及应用已编译通过#include <stdio.h> int*p,a[10];//sizeofp;unsignedintc=-20;intd=10;typedefenum{   true=1,false=0}bool;  //布尔类型,使用前必须自定义enumweekday      //枚举类型 {sun=…

    2022年5月20日
    51
  • python中的split()函数的用法「建议收藏」

    python中的split()函数的用法「建议收藏」函数:split()Python中有split()和os.path.split()两个函数,具体作用如下:split():拆分字符串。通过指定分隔符对字符串进行切片,并返回分割后的字符串列表(lis

    2022年7月5日
    24

发表回复

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

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