isset()和NOT运算符

时间:2014-11-01 19:37:20

标签: php

我知道像this one这样的问题。有很多很好的答案。

我知道这是"修复"在PHP 5.5.x,但我很遗憾,我正在使用5.3.x

$iHatePHP = $node->get($key);
if (isset($node->get($key)) ...

我得到的错误:

Fatal error: Can't use method return value in write context in ...

我知道"修复"是将get()的结果放入变量并在其上调用isset()。但是,为了在我的代码中保存数千次写入,是等同还是我错过了一些情况?

$iHatePHP = $node->get($key);
if (!($node->get($key)) ...

修改:我控制get()。所以我可以让它返回任何我喜欢的内容,例如NULLFALSE""

1 个答案:

答案 0 :(得分:2)

isset() pseudo-function不会检查转换为false的变量,而是检查null的变量。此外,它还会检查变量或数组键的存在;一个不存在的变量无论如何都会null,但如果您输入的名称或类似名称错误,也会发出通知。

当您测试函数或方法调用的结果时,您知道某些返回值(没有return语句的函数或普通{{1}没有价值,正在返回return;),所以额外的情况是"没有这样的变量"是不可能的。因此,测试该值的最简单方法是is_null

null

如果if ( is_null($node->get($key)) ) ... 返回$node->get($key)false0,则''版本会因{{3}而输入!声明}}

类似的the rules on converting other types to boolean 进行评估,就像您应用了if运算符一样,但保留了不存在的变量的特殊行为 - !是有效的与empty($foo)相同。