我知道像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()
。所以我可以让它返回任何我喜欢的内容,例如NULL
,FALSE
或""
答案 0 :(得分:2)
isset()
pseudo-function不会检查转换为false
的变量,而是检查null
的变量。此外,它还会检查变量或数组键的存在;一个不存在的变量无论如何都会null
,但如果您输入的名称或类似名称错误,也会发出通知。
当您测试函数或方法调用的结果时,您知道某些返回值(没有return
语句的函数或普通{{1}没有价值,正在返回return;
),所以额外的情况是"没有这样的变量"是不可能的。因此,测试该值的最简单方法是is_null
:
null
如果if ( is_null($node->get($key)) ) ...
返回$node->get($key)
,false
或0
,则''
版本会因{{3}而输入!
声明}}
类似的the rules on converting other types to boolean 进行评估,就像您应用了if
运算符一样,但保留了不存在的变量的特殊行为 - !
是有效的与empty($foo)
相同。