PHP奇怪的行为:false或true返回false

时间:2013-03-07 16:41:04

标签: php

我在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

有谁知道第二个结果是怎么出现的??

谢谢:)

2 个答案:

答案 0 :(得分:7)

orand 更低 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)

它被称为运算符的优先级。

请参阅here

所以

$a = false OR true;

相同
($a = false) OR true;

等...