引言

PHP 程序中很多地方会用到判断是否为空,比如字符串为空,数组为空,对象为空,或者其他数据类型为默认空值。

今天我们说一下判断 null 的两种方法的区别。一般可以使用 is_null 函数,判断变量是否是 null,还可以使用 === null 判断是否与 null 值绝对相等。

这两者有什么区别呢?

学习时间

比如有一个 if 语句要判断某个变量是否为 null,有下面两种写法:

if (is_null($var)) do_something();

if ($var === null) do_something();

到底哪种方式更优,效率更高?

这里有个前提,只要是变量经过初始化,两种方式相同。只不过,is_null 还要加上函数调用的开销,而 === 则直接执行条件判断操作,效率更高。

===用于严格的数据比较。NULL只有一个“值”,因此可以与NULL(这是null“值”的PHP常量)进行比较。

is_null 正在检查变量是否为NULL数据类型。

因为PHP是脚本语言,其数据类型动态指定,那么有必要梳理一下各种空值在做运算时候的返回值了:

特别需要指出的是,empty 函数相当于 == null,而 is_null 相当于 === null,后者比较更为严格。

而 isset 函数是 is_null / === null 的反向操作。

深入学习

实际编程中我们倾向于使用 is_null 函数,因为这样写程序更容易读。比如在较为流行的 Laravel 框架内,就是用了大量的 is_null 函数。比如用户对象判断为null。

if (! is_null($this->user)) {

return $this->user;

}

比如对模型判断为空,则创建新的对象:

protected function newModelQuery($model = null)

{

return is_null($model)

? $this->createModel()->newQuery()

: $model->newQuery();

}

还有一个原因是,is_null 作为函数,可以方便地作为回调函数引用。比如对数组内所有元素做非 null 过滤。

$arrayOfNullValues = array_filter($myArray, 'is_null');

写在最后

本文介绍了PHP判断是否为 null 的两种方式,希望大家能够熟练使用,写出更优雅健壮的代码。

Happy coding :_)

我是 @程序员小助手 ,持续分享编程知识,欢迎关注。

php is_null 判断,PHP判断null,别再=了,你真控制不住相关推荐

  1. JS 中如何判断 undefined 和 null

    为什么80%的码农都做不了架构师?>>>    JS 中如何判断 undefined JavaScript 中有两个特殊数据类型:undefined 和 null,下节介绍了 nul ...

  2. Java的if判断对象为null时,null放在比较运算符的左边还是右边较好?

    如java中:if(name == null)和if(null == name)有什么讲究吗? 答:在java里面,它们是一样的.但是通常写为null == name.这其实是在C语言里面引申出来的. ...

  3. 在JS中如何判断undefined和null

    不当用法 有时为了判断某个值有效,JS新手会写这种臃肿代码: if (data != null && typeof(data) != undefined && data ...

  4. Js如何判断undefined和null

    判断是否为undefined var example = undefined; if (typeof(example) == "undefined") {console.log(& ...

  5. jq判断html为空,jquery如何判断是否为null?

    在我们使用jQuery的做表单验证的时候,有事常常使用到一下的判断,例如是否为null.undefine.NaN.下面本篇文章就简单的总结一下.有一定的参考价值,有需要的朋友可以参考一下,希望对大家有 ...

  6. mysql 判断等于空字符串,MySql判断是否为null或空字符串

    MySql判断是否为null或空字符串 判断方法: if  ISNULL(aBegBalRule) || LENGTH(trim(aBegBalRule))<1 THEN ELSE END IF ...

  7. 逻辑判断-if语句/文件目录属性判断/case判断

    逻辑判断IF -gt :大于 -lt :小于 -eq :等于 -ne :不等于 -ge :大于或等于 -le :小于或等于 格式1: if 条件 :then 语句: fi a=5 if [ $a -g ...

  8. 空指针:从 0 到 NULL,再到 nullptr

    nullptr 空指针:从 0 到 NULL,再到 nullptr NULL 是一个宏定义: #undef NULL #if defined(__cplusplus) #define NULL 0 # ...

  9. python中1 is True 的结果为False,is判断与==判断的区别

    python中1 is True 的结果为False,而1 == True的结果为True. python中True的数值就是1,那为什么1 is True 的结果为False呢? 因为is判断和== ...

最新文章

  1. java三个取最大值、菜单新增修改、猜数字大小
  2. EMNLP 2020 | RecAdam: 在更少的遗忘下精调预训练语言模型
  3. BigGAN、BiGAN、BigBiGAN简单介绍
  4. ES3~ES7的数组方法
  5. day26 SQL注入神器—— Sqlmap
  6. 2022凉茶市场份额
  7. H106OJ | 第二次练习(查找)
  8. 在openEuler 21.9安装自带的容器软件Docker、podman、skopeo
  9. mac中没有my.cnf文件 mysql
  10. 使用UltraISO(软碟通)制作U盘启动盘完整教程
  11. 1Mbps带宽到底能够达到什么效果,看看下面的介绍就懂了。
  12. MySQL多实例(一台服务器搭建多个数据库)
  13. 个人单干也能实现年入百万(玩转私域流量)
  14. 2022年钒电池行业研究报告
  15. 强迫症的 Mac 设置指南
  16. 记一次笔记本SSD系统迁移
  17. vue开发android tv,vue-tv-focusable中文文档
  18. CBTC系统标准: 1474.3---系统设计和功能分配需求
  19. uniGui删除服务器文件,彻底取消unigui /server页面
  20. 【JY】混凝土分析工具箱:CDP模型插件与滞回曲线数据

热门文章

  1. 第十五届智能车竞赛技术报告-成电金秋-AI电磁
  2. 第十五届全国大学生智能汽车竞赛 信标组亮灯顺序和次数
  3. 自己动手修改龙邱信标灯固件FM频率
  4. 500线电机光电码盘
  5. 300*4=1200
  6. MySQL查询本年的数据的sql语句
  7. c# mysql fill_C#里sqlDataAdapter.fill(DataSet,String)的用法
  8. 七猫php面试,七猫面试 - osc_2frv0wjp的个人空间 - OSCHINA - 中文开源技术交流社区...
  9. pythonturtle画房子_用python的turtle模块实现给女票画个小心心
  10. php中控制面板折叠,微信小程序折叠面板的实现方法示例