这些方法有什么区别,哪种方式可以正确检查NULL?

4
所有三种方法都是用于检查null值的。
if($sth == NULL)

if($sth === NULL)

if(is_null($sth))

哪种方式是正确的?

我猜第二个可能是最快的,但这只是我的猜测,我还没有进行任何基准测试。 - Shef
3个回答

11

他们检查三件不同的事情:

if ($sth == NULL)

这个代码检查$sth是否与null松散相等。这意味着如果$sth实际上是0,它也会通过。

if ($sth === NULL)

这将检查$sth是否完全等于null

if (is_null($sth))

这个检查代码检查$sth类型是否为null类型(其他几个测试$sth)。

===is_null技术将始终给出相同的答案;==有时会给出不同的答案。


我认为is_null不是最快的方法,因为它会增加函数开销。虽然速度差异不会太大。+1。 - Shef
@Shef 令我惊讶的是(我以为我之前做过这个,结果不同),你是对的。已编辑。 - lonesomeday
这两个的区别在哪里?我看到的语句完全相同。 - sll
@silev null == 0是成立的,这是因为type juggling,这可能不是你想要的结果。 - lonesomeday

1

第一个测试仅检查$sth是否等于NULL,而0也将为真。 第二个检查类型是否相等。因此,只有$sth的值为NULL时才为真。 第三个仅适用于变量,而不适用于函数结果。

还有一个小提示:我偶尔会将if($sth == NULL)误打成if($sth = NULL),这将导致难以找到的错误。最好输入if(NULL == $sth),如果您写错了,解释器将报错并指向正确的方向。


0

我会使用

if(is_null($sth))

但我认为两者都不错


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接