2012-07-31 150 views
-3

我的if語句有什麼問題?如果聲明php

$sMasterDID = 85487; 
    if($sMasterDID != "78681" OR $sMasterDID != "85487"){ 
     echo "if"; 
    }else{ 
     echo "else"; 
    } 

這應該回顯:'else'。對?並不是!

如果我這樣做了,如果語句的工作方式:

$sMasterDID = 85487; 
    if($sMasterDID != "85487"){ 
     echo "if"; 
    }else{ 
     echo "else"; 
    } 

我也嘗試了代碼的數量刪除引號您使用OR錯誤(不工作)

if($sMasterDID != 78681 OR $sMasterDID != 85487) 
+0

@casper感謝您的關注! – 2012-07-31 18:30:38

+0

@watcher沒問題。感謝參加[Summer of Love](@blog.stackoverflow.com/2012/07/kicking-off-the-summer-of-love/) – casperOne 2012-07-31 18:31:53

+0

@casperOne,這在SO中非常有爭議。 [你鏈接的元問題](http://meta.stackexchange.com/questions/23321/is-it-closed-to-comment-on-peoples-accept-rate/)有幾個高度上升的答案,解釋了留下這樣的評論。只因爲你不喜歡它,並不意味着它是一個規則。 – Adi 2012-07-31 18:38:47

回答

1

if ($x != '1' OR $x != '2')將始終評估爲true。改爲使用AND

+0

感謝您的幫助! – 2012-07-31 18:36:25

3

你必須看看每個單獨的語句評估什麼。

$sMasterDID = 85487; 
$sMasterDID != "78681" //true 
$sMasterDID != "85487" //false 

當在語句中使用,if(true OR false)評估爲if(true),因爲true OR falsetrue,所以echo "if";執行。

0

或運營商不是獨家或。如果在你的,如果

$sMasterDID != "78681"

計算結果爲真,整個語句評估爲真值之一。

1
$sMasterDID = 85487; 
if ($sMasterDID != "78681" OR $sMasterDID != "85487") 
    { 
    echo "if"; 
    } 
else 
    { 
    echo "else"; 
    } 

讓我們來了解你的工作。這就是你做

第一款:「$ sMasterDID」等於真
第二條款「$ sMasterDID」等於false

你要這麼想
如果第一條是真還是假做第一個,否則做第二個;但是當 你檢查$ sMasterDID是否與85487不同,它的錯誤是因爲之前的「$ sMasterDID = 85487」。所以,它會做第二個陳述;但是當你把第一個子句 詢問'$ sMasterDID'是否與85487不同時它是真的。

你有這樣的結果在IF子句:

IF(TRUE)OR(FALSE),所以我們從來沒有運行第二個條款,結果總是TRUE。

瞭解了嗎?

爲了更好地理解,請參閱布爾代數。

OR
FALSE FALSE + = FALSE
FALSE TRUE + = TRUE
TRUE + FALSE = TRUE
TRUE + TRUE = TRUE

記住布爾代數。