2013-08-03 87 views
1
$bBoolVal = ((6 < 5) Or (13 - 6 > 0)); 
if ($bBoolVal) echo 'makes sense'; else echo 'makes no sense'; 

结果: “有道理”为什么评估这两个php表达式的结果不同?

$bBoolVal = (6 < 5) Or (13 - 6 > 0); 
if ($bBoolVal) echo 'makes sense'; else echo 'makes no sense'; 

结果: “没有任何意义”

这是因为如果 '=' 的优先级比 '或' 紧缩 - 当然不是?

回答

0

是更大的优先级,则具有=更高的优先级。利用这种机制的一个熟悉的例子就是经常出现在PHP手册:

$result = mysql_query($sql) or die(mysql_error()); 

它就像

$result = mysql_query($sql); 
if (!$result) die(mysql_error()); 
+0

我用你的例子构建所有的时间,但从来没有进行连接! – DJDave

0

就好像'='比'或'更紧密 - 肯定不是?

它的确如此。

它以OR开头并首先评估右侧:赋值的返回值为false。整个表达式的值是正确的,但您只检查分配给$bBoolVal的内容。

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'; 
相关问题