or
操作符的行为。请参考以下示例:$e = false || true;
var_dump($e);
输出结果符合预期:bool(true);
$f = false or true;
var_dump($f);
输出结果符合预期:bool(false)
。我的理解是 =
操作符比 Or
操作符的优先级高,所以 $f
被赋值为 false
。
但下面的代码与我想象的正好相反。我认为 $foo
会被赋值为 5
然后与自身进行比较。
但实际上只有在 $foo
已经被设置(也就是检查 $foo
是否已经被赋值),才会将其赋值为 5。
$foo or $foo = 5;
有人能解释一下这为什么这样吗?