2012-07-31 78 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

记住布尔代数。