我正在尝试理解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
,这意味着它正在检查之前是否为$foo
分配了任何内容,并将5分配给它。
$foo or $foo = 5;
有人能解释一下为什么会这样吗?
发布于 2012-08-31 18:24:49
$foo or $foo = 5;
Suppose let say $foo=true or $foo=5;
这里它不会计算after或运算符表达式,因此输出将是$foo=1,现在表达式是
$foo=false or $foo=5;
在这里,它将计算after或as =更高的优先级,因此它将计算$foo=5
,因此输出将为5
。但是,当我们计算$foo=false or true
时,此处它将考虑=更高的优先级,因此输出将为$foo=false
,但整个表达式将计算为true,因为false or true
变为false
发布于 2012-08-31 18:25:36
<?php
$foo = false;
$foo or ($foo = '5');
echo $foo;
?>
选中此选项,您可以为$foo
指定值"5“。
与or
相比,=
具有更高的优先级。这是事实..。:)
https://stackoverflow.com/questions/12213283
复制相似问题