我在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
Run Code Online (Sandbox Code Playgroud)
有谁知道第二个结果是怎么出现的??
谢谢 :)
or并and有较低的 优先级,然后=.
这是有效的:
($a = false) OR true;
($a = true) OR false;
$a = (false || true);
Run Code Online (Sandbox Code Playgroud)
请注意,这是人们倾向于使用的原因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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
133 次 |
| 最近记录: |