2013-08-03 52 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'; 
相關問題