所以我只是进行了一些随机测试并了解Precedence的基本原理以及 || 和或运算符,但我无法理解为什么$ f更改:
$f = 0 || 1;
if ($f === 1){
echo "TRUE - $f";
}else{
echo "FALSE - $f";
}
$f = 0 or 1;
if ($f === 0){
echo "TRUE - $f";
}else{
echo "FALSE - $f";
}
感谢您的一些见解。
答案 0 :(得分:1)
您所做的与以下相同:
if (($f = 0) or 1){
// $f is being assigned the value 0, and the condition evaluates 0 or 1,
// 1 being equivalent to true, the condition is always true.
echo "TRUE - $f";
}else{
echo "FALSE - $f";
}
和
if ($f = (0 || 1)){ // which gives $f = true which returns true
echo "TRUE - $f";
}else{
echo "FALSE - $f";
}
如果你想检查$ f是否等于你要做的另一个值
if ($f === 0 or $f === 1)
请注意,在php中,默认情况下,int 1将被评估为bool true,除非您进行严格的比较===或!==
答案 1 :(得分:0)
始终评估True
是正常的。原因是OR表示如果其中一个值为True,则将采用此值。
更新您的新问题:
答案是“||”优先级高于“或”
// The result of the expression (false || true) is assigned to $e
// Acts like: ($e = (false || true))
$e = false || true;
// The constant false is assigned to $f and then true is ignored
// Acts like: (($f = false) or true)
$f = false or true;
您可以在我找到此示例的PHP手册网站here了解更多信息
答案 2 :(得分:0)
问题在于:" if($ f = 0或1){" :
" ="意味着你给变量$ f赋值0
您应该使用: