【发布时间】:2015-10-26 15:39:34
【问题描述】:
结果:
var_dump(null != $a = 15);
var_dump($a);
是:
bool(true)
int(15)
为什么这个脚本没有触发错误?
由于!=(不等于运算符)的优先级高于=(赋值运算符),所以$a应该先与null比较?
【问题讨论】:
-
确实很奇怪。
$a == null = 15也提供虚假转储。并且输入(null != $a) = 15确实会吐出一个意想不到的=错误。 -
除了将其解释为
null != ($a=15)之外,还有什么替代方法?使用(null !=$a)=15,您可以尝试将值 15 分配给布尔值;这行不通。 -
@VolkerK 这是一个例子,这个脚本没有实际用途!我的反思从我经常看到(和使用)的这种表达开始
if (!$a = foo())。 -
然后同样的事情也适用。您将如何为 (!$a) 赋值?
标签: php parsing compiler-construction operators