-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

ステートメントで使用すると、since isとif(true OR false)評価されるため、 soが実行されます。if(true)true OR falsetrueecho "if";

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

あなたが何をしているのか理解しましょう。最初の句の実行方法

: '$sMasterDID' は true
に等しい 2 番目の句 '$sMasterDID' は false に等しい

そのように考え
なければなりません。最初の節が true または false の場合は最初の節を実行し、そうでない場合は 2 番目の節を実行します。しかし、$sMasterDID が 85487 と異なるかどうかを確認すると、以前は "$sMasterDID = 85487" だったため、偽です。したがって、2 番目のステートメントを実行します。しかし、「$sMasterDID」が 85487 と異なるかどうかを尋ねる最初の句を入れると、その真になります。

IF 句に次の結果があります。

IF (TRUE) OR (FALSE) は常に TRUE になるため、2 番目の句は実行されません。

了解した?

理解を深めるために、ブール代数を参照してください。

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

ブール代数を思い出してください。

于 2012-07-31T19:12:06.783 に答える
1

使い方がOR間違っています。if ($x != '1' OR $x != '2')は常に に評価されtrueます。AND代わりに使用してください。

于 2012-07-31T18:20:02.553 に答える
0

or 演算子は排他的な orではありません。あなたのifの値の1つ

$sMasterDID != "78681"

が true に評価されると、ステートメント全体が true に評価されます。

于 2012-07-31T18:21:05.103 に答える