$bBoolVal = ((6 < 5) Or (13 - 6 > 0));
if ($bBoolVal) echo 'makes sense'; else echo 'makes no sense';
结果:“有道理”
$bBoolVal = (6 < 5) Or (13 - 6 > 0);
if ($bBoolVal) echo 'makes sense'; else echo 'makes no sense';
结果:“毫无意义”
好像'='比'或'更紧密 - 肯定不是?
答案 0 :(得分:1)
根据PHP中的运算符优先级,行为是正确的。
http://php.net/manual/en/language.operators.precedence.php
'&&', '||'
的优先级高于'='
,但'='
的优先级高于“and', 'or'
答案 1 :(得分:0)
好像'='比'或'更紧密 - 肯定不是?
确实如此。
以OR开头并首先评估右侧:赋值的返回值为false。整个表达式的值为true,但您只检查分配给$bBoolVal
的内容。
答案 2 :(得分:0)
使用||
代替or
使其绑定比=
更紧密。
答案 3 :(得分:0)
您的其他形式的代码:
$bBoolVal = ((false) Or (true)); //true
if ($bBoolVal) echo 'makes sense';
else echo 'makes no sense';
$bBoolVal = (false) Or (true); //false
(($bBoolVal = false) or true) //equivalent expression which is false
if ($bBoolVal) echo 'makes sense';
else echo 'makes no sense';
答案 4 :(得分:0)
是的,=具有更高的优先级。在php手册中经常可以看到一个熟悉的利用这种机制的例子:
$result = mysql_query($sql) or die(mysql_error());
就像
一样$result = mysql_query($sql);
if (!$result) die(mysql_error());