引言
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;}
比如对模型判断为空,则创建新的对象:
protectedfunctionnewModelQuery($model=null){returnis_null($model)?$this-createModel()-newQuery():$model-newQuery();}
还有一个原因是,is_null作为函数,可以方便地作为回调函数引用。比如对数组内所有元素做非null过滤。
$arrayOfNullValues=array_filter($myArray,is_null);
写在最后
本文介绍了PHP判断是否为null的两种方式,希望大家能够熟练使用,写出更优雅健壮的代码。
Happycoding:_)
我是
程序员小助手,持续分享编程知识,欢迎