变量赋值的结果与函数的返回不同:
function test() {
return !true
or !true
or !count(4)
or (
new stdClass() and true
);
}
$result = !true
or !true
or !count(4)
or (
new stdClass() and true
);
echo (int)$result . PHP_EOL; // 0
echo (int)test() . PHP_EOL; // 1
答案 0 :(得分:1)
这是由于 Operator Precedence 。
作业操作的优先级高于and
/ or
。
第一个等于:
function test() {
return (!true
or !true
or !count(4)
or (
new stdClass() and true
));
}
而第二个等于:
($result = !true)
or !true
or !count(4)
or (
new stdClass() and true
);
使用&&
/ ||
代替and
/ or
,结果将是相同的。