我的if语句出了什么问题?
$sMasterDID = 85487;
if($sMasterDID != "78681" OR $sMasterDID != "85487"){
echo "if";
}else{
echo "else";
}
这应该呼应:"其他"。正确的而不是!!
如果我这样做,If语句有效:
$sMasterDID = 85487;
if($sMasterDID != "85487"){
echo "if";
}else{
echo "else";
}
我还尝试了从数字中删除引号的代码(不起作用)
if($sMasterDID != 78681 OR $sMasterDID != 85487)
您必须查看每个语句的评估结果。
$sMasterDID = 85487;
$sMasterDID != "78681" //true
$sMasterDID != "85487" //false
在语句中使用时,由于true OR false
是true
,因此if(true OR false)
计算为if(true)
,因此执行echo "if";
。
您使用OR
错误。CCD_ 7将始终评估为CCD_。请改用AND
。
$sMasterDID = 85487;
if ($sMasterDID != "78681" OR $sMasterDID != "85487")
{
echo "if";
}
else
{
echo "else";
}
让我们了解一下你的工作方式
第一个子句:"$sMasterDID"等于true
第二个子句"$sMasterDID"等于false
你必须这样想
如果第一个子句为真或假,则执行第一个子句,否则执行第二个子句;但是当您检查$sMasterDID是否与85487不同,因为之前"$sMasterDID=85487",所以为false。因此,它将执行第二个语句;但是当你放第一个条款的时候询问"$sMasterDID"与85487是否不同,这是真的
在IF子句中有这样的结果:
IF(TRUE)OR(FALSE),结果总是TRUE,所以我们从不运行第二个子句。
明白了吗?
请参阅布尔代数以获得更好的理解。
或
FALSE+FALSE=FALSE
FALSE+TRUE=TRUE
TRUE+FALSE=TRUE
TRUE+TRUE=TRUE
记住布尔代数。
or运算符不是独占运算符或运算符。如果你的If 中有一个值
$sMasterDID != "78681"
如果计算结果为true,则整个语句的计算结果为true。