php中isset, empty, is_null的区别

php中有三个函数, 它们很容易让人混淆, 我们今天就来弄明白它们的区别.

数据类型

我们只做简单的数据类型的区别, 这个搞懂了, 对象数组也一个道理.

php的数据类型有 string, number, boolean, null, undefind 五种基础类型, 它们就是我们容易混淆的关键.

undefind: 代表没有定义变量, 也就是根本不存在的状态.

null: 当我们定义了变量, 但是不知道给变量是什么类型的时候, 就可以设置为null, 这个比undefind前进了一步.

string,number,boolean的初始值: 这三个类型大家都懂, 但是它们的初始值’’,0,false则非常关键, 是在null的基础上又进了一步, 当我们知道变量是什么类型的时候, 但是不确定给什么值得时候就可以给初始值.

string,number,boolean的常规值: 常规值没什么好说的, 就是在初始值的基础上又进了一步.

isset, empty的比较

当我们有了上面的数据类型基础后就可以讨论isset, empty, is_null的区别了.

isset: 当一个变量没定义(undefind)或者定义了但是不确定是什么类型(null), 则表示没有设置, 也就是false, 反之则是true.

empty: 当一个变量没定义(undefind)或者定义了但是不确定是什么类型(null), 又或者定义了也确定了类型但是不知道赋给什么值(’’,0,false), 则表示空, 也就是true, 反之则是false.

可以看出isset和empty是递进关系, 可以理解为empty是isset的增强. 下面是对比的代码:


// isset的测试

<?php

isset($var); //false

$var = null;
isset($val); //false

$var = '';
isset($val); //true

$var = 0;
isset($val); //true

$var = false;
isset($val); //true


// empty的测试

empty($var); //true

v a r = n u l l ; e m p t y ( var = null; empty( var=null;empty(val); //true

v a r = ′ ′ ; e m p t y ( var = ''; empty( var=;empty(val); //true

v a r = 0 ; e m p t y ( var = 0; empty( var=0;empty(val); //true

v a r = f a l s e ; e m p t y ( var = false; empty( var=false;empty(val); //true


is\_null
--------

好了, 现在可以说is\_null了, 其实is\_null和isset, empty不是一个层次的, is\_null和is\_boolean, is\_int等函数才是一个层次.

`is_null`: 如果变量没定义, 直接报错; 如果变量定义了但是不知道什么类型(null), 则是true; 其他情况都是false.

//is_null测试

is_null($var); //Undefined variable异常

v a r = n u l l ; i s n u l l ( var=null; is_null( var=null;isnull(var); //true


文章首发于: [https://w2fenx.com/308.html](https://w2fenx.com/308.html)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值