应该使用“if($a!=NULL)”或“if($a!==NULL)”来控制程序流


Should one use `if ($a != NULL)` or `if ($a !== NULL)` to control program flow?

这可能是一个需要回答的基本问题,但我想知道使用PHP的if idential!==if equal!=来控制流的性能问题。

考虑以下琐碎的PHP函数:

<?php
 function test_json($json = NULL) {
  if ($json != NULL) {
   echo 'You passed some JSON.';
  } else {
   echo 'You failed to pass any JSON.';
  }
 }
?>

从性能的角度来看,如果相同(!==),是否最好使用来防止PHP迭代变量类型,试图找到有效的比较?

假设!==首先比较变量类型,如果失败,它会立即返回FALSE?我从PHP3开始就使用!=,几乎是一种反射。现在我正在处理一些计算密集度更高的项目,微小的性能考虑变得更加令人担忧。

当然,欢迎其他关于流量控制优化的评论!

我还没有对宽松与严格比较运算符进行任何性能测试,但对于您想要做的事情,我建议您使用

if (!is_null($json)) {
    do_stuff()
}

有关is_null()的更多信息,请访问http://www.php.net/manual/en/function.is-null.php

编辑:我在上面链接的php页面评论中的一个注释显示,===运算符比==运算符略快,两者都比is_null()快。然而,另一个注意点指出,"===NULL和is_NULL之间的执行时间差小于250纳秒。去优化一些重要的东西。"我不得不同意这一点。尽管如此,我还是建议你选择你认为最可读的。

您可以在询问之前编写这样的测试代码;根据测试"使用"==="比is_null()快30倍。"

http://www.php.net/manual/en/language.types.null.php#77937