我在PHP 5.4.3中遇到了一个奇怪的错误
var_dump(false OR true); // boolean true // OK
$a = false OR true;
var_dump($a); // boolean false // !!????
$a = true OR false;
var_dump($a); // boolean true // OK
$a = false || true;
var_dump($a); // boolean true // OK
有谁知道第二个结果是怎么出现的??
谢谢:)
答案 0 :(得分:7)
or
和and
更低 precedence然后=
。
这是有效的:
($a = false) OR true;
($a = true) OR false;
$a = (false || true);
请注意,这就是人们倾向于使用or die()
构造的原因(真的,真的,真的应该是or trigger_error()
的,die
的错误代码中没有错误):如果左手赋值的结果(在这种情况下$a
中的结果值)是false
,请执行右侧。
比较
$a = false or print("what is going on?");
// prints 'what is going on?', $a === false
$a = true or print("what is going on?");
// prints nothing, $a === true
答案 1 :(得分:2)