这有什么区别......
if (is_null($var)) {
do_something();
}
Run Code Online (Sandbox Code Playgroud)
还有这个?
if ($var === null) {
do_something();
}
Run Code Online (Sandbox Code Playgroud)
检查变量是否包含null时哪种形式更好?我应该注意哪些边缘情况?(我初始化所有变量,因此不存在的变量不是问题.)
PHP*_*Pst 92
? 是 true
? 是 false
| isset | is_null | ===null | ==null | empty |
|-------|---------|---------|---------|---------|---------|
| null | ? | ? | ? | ? | ? |
| true | ? | ? | ? | ? | ? |
| false | ? | ? | ? | ? | ? |
| 0 | ? | ? | ? | ? | ? |
| 1 | ? | ? | ? | ? | ? |
| \0 | ? | ? | ? | ? | ? |
| unset | ? | ? | ? | ? | ? |
| "" | ? | ? | ? | ? | ? |
Run Code Online (Sandbox Code Playgroud)
empty 相当于 ==nullis_null 相当于 ===nullisset是的倒数is_null和===nullCra*_*ige 27
如果变量已初始化(您确实指出了 - 虽然我不是100%确定这是否在此上下文中是否重要.如果未定义变量,两个解决方案都可能会发出警告),它们在功能上是相同的.我认为它===会略微加快,因为它消除了函数调用的开销.
这真的取决于你如何看待自己的状况.
===是用于严格的数据比较.NULL只有一个'value',所以这适用于与NULL进行比较(这是null'值'的PHP常量)
is_null 检查变量是否为NULL数据类型.
这取决于你选择的,真的.
Ish*_*Ish 16
两者完全相同,我使用is_null它是因为它使我的代码更具可读性
如果php有这么多的is_foo()类型函数似乎是多余的,当你可以使用标准的比较运算符时,请考虑以编程方式调用函数.
$arrayOfNullValues = array_filter($myArray, 'is_null');
Run Code Online (Sandbox Code Playgroud)
我刚刚运行了一个快速基准测试,测试了每个测试的一百万次迭代。is_null耗时 8 秒完成;=== null拿了 1。
所以调用 tois_null比===在我的计算机上调用 to 慢 0.000007s 。
我会发现一些更有用的优化。
我的代码:
<?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;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5956 次 |
| 最近记录: |