-4

我的 if 语句有什么问题?

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

这应该回显:'else'。正确的?而且不是!

如果我这样做,则 if 语句有效:

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

我还尝试了从数字中删除引号的代码(不起作用)

    if($sMasterDID != 78681 OR $sMasterDID != 85487)
4

4 回答 4

3

您必须查看每个单独的语句的评估结果。

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

在语句中使用时,if(true OR false)计算结果为,if(true)因为true OR falsetrue,所以echo "if";被执行。

于 2012-07-31T18:20:40.207 回答
1

你用OR错了。if ($x != '1' OR $x != '2')将始终评估为true. 改为使用AND

于 2012-07-31T18:20:02.553 回答
1
$sMasterDID = 85487;
if ($sMasterDID != "78681" OR $sMasterDID != "85487")
    {
    echo "if";
    }
else
    {
    echo "else";
    }

让我们了解您的工作。您执行

第一个子句的方式:'$sMasterDID' 等于 true
第二个子句 '$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

记住布尔代数。

于 2012-07-31T19:12:06.783 回答
0

or 运算符不是排他的 or。如果您的 if 中的值之一

$sMasterDID != "78681"

评估为真,整个语句评估为真。

于 2012-07-31T18:21:05.103 回答