is_null($ var)和($ var === null)有什么区别?
这有什么区别吗
if (is_null($var)) { do_something(); }
和这个?
if ($var === null) { do_something(); }
检查variables是否包含空值时哪种forms更好? 有没有我应该知道的边缘情况? (我初始化所有的variables,所以不存在的variables不是问题。)
如果variables被初始化(你确实表示 – 虽然我不是100%确定这个问题是否在这个上下文中,如果这个variables没有被定义,这两个解决scheme可能会发出警告),它们在function上是相同的。 我认为===
会稍微快一些,但是它会消除函数调用的开销。
这真的取决于你如何看待你的状况。
===
是一个严格的数据比较。 NULL只有一个“值”,所以这个工作是为了与NULL(这是一个PHP常量的null值)进行比较
is_null
正在检查variables是否为NULL数据types。
真的,这取决于你自己select。
✅
是true
❌
是false
| isset | is_null | ===null | ==null | empty | |-------|---------|---------|---------|---------|---------| | null | ❌ | ✅ | ✅ | ✅ | ✅ | | true | ✅ | ❌ | ❌ | ❌ | ❌ | | false | ✅ | ❌ | ❌ | ✅ | ✅ | | 0 | ✅ | ❌ | ❌ | ✅ | ✅ | | 1 | ✅ | ❌ | ❌ | ❌ | ❌ | | \0 | ✅ | ❌ | ❌ | ❌ | ❌ | | unset | ❌ | ✅ | ✅ | ✅ | ✅ | | "" | ✅ | ❌ | ❌ | ✅ | ✅ |
摘要:🔸♦️🔸
-
empty
相当于==null
-
is_null
相当于===null
-
isset
与is_null
和===null
相反
两者完全相同,我使用is_null
因为它使我的代码更具可读性
如果php有很多is_foo()types的函数似乎是多余的,那么当你可以使用标准的比较运算符的时候,可以考虑用编程的方式调用函数。
$arrayOfNullValues = array_filter($myArray, 'is_null');
我刚刚运行了一个快速的基准testing,每个testing一百万次。 is_null
花了8秒钟完成; === null
了1。
所以对is_null
的调用比在我的电脑上调用===
要慢0.000007s。
我会find一些更有用的优化。
我的代码:
<?php $start = time(); $var = null; for ($i = 1000000; $i--; ) { is_null($var); } echo time() - $start; $start = time(); for ($i = 1000000; $i--; ) { $var === null; } echo time() - $start;
我会每次都使用内置的PHP函数进行运算符比较。
is_null($var)
比$var===null
…慢了大约14倍… 37.8 ms比2.6 ms。
但实际上我不知道为什么。