ste*_*ven 0 php operators boolean-expression
有谁能解释这种行为:
<?php
$var1 = true;
$var2 = 0;
$var3 = $var1 AND $var2;
var_export($var3); // Output: true
var_export(true AND 0); // Output: false
var_export($var1 AND $var2); // Output: false
Run Code Online (Sandbox Code Playgroud)
输出来自PHP 7.0
为什么true第三个输出为第一个输出false?
顺便说一句:$var2是0或没关系false。行为是相同的。
@all:我知道我应该使用&&并且我总是这样做!
It actually comes because && is different from AND.
$var1 = true;
$var2 = 0;
$var3 = $var1 && $var2;
var_export($var3); // Output: false
$var3 = $var1 AND $var2;
var_export($var3); // Output: true
Run Code Online (Sandbox Code Playgroud)
In the && case you actually write $var3 = ( $var1 && $var2 )
In the AND case you actually write ( $var3 = $var1 ) AND $var2
That's because = has greater precedence then AND, but && has greater precedence then =