0

これが機能しない理由がわかりません。データベース フィールドstatussでは、 is 8. そして、次You cannot do that!のコードから出力を取得しています。

if ( $o['statuss'] !== 1 || $o['statuss'] !== 8 ) {
  $ret['result_msg'] = 'You cannot do that!';
  die(json_encode($ret));
}

私はすでに試しましたが、役に立ちませんでした:

if ( ($o['statuss'] !== 1) || ($o['statuss'] !== 8) )

私が去るだけならif ( $o['statuss'] !== 8 )、すべてが期待どおりに機能します。

4

4 に答える 4

3

うまくいっていると思いますが、あなたはそれを間違って解釈しています。あなたの値は8です。したがって、あなたの表現は実際には次のとおりです。

if (8 !== 1 || 8 !== 8) {
    // ...
}

true8 は1と等しくないため、最初の式はYou cannot do that!です。

AND式 ( ) が必要&&なのは、値が 1 AND 8 以外の場合にエラー メッセージを表示するためです。


ここで何が起こっているのかよくわかっていないようですので、さらに説明させてください。

1 から 8 までのすべての数について個別に考え$o['statuss'] !== 1てみましょう。$o['statuss'] !== 8

  • 1 !== 1=> false, 1 !== 8=> true:1 !== 8メッセージが表示されるため。
  • 2 !== 1=> true, 2 !== 8=> true:2 !== 1メッセージが表示されるため。
  • 3 !== 1=> true, 3 !== 8=> true:3 !== 1メッセージが表示されるため。
  • 4 !== 1=> true, 4 !== 8=> true:4 !== 1メッセージが表示されるため。
  • 5 !== 1=> true, 5 !== 8=> true:5 !== 1メッセージが表示されるため。
  • 6 !== 1=> true, 6 !== 8=> true:6 !== 1メッセージが表示されるため。
  • 7 !== 1=> true, 7 !== 8=> true:7 !== 1メッセージが表示されるため。
  • 8 !== 1=> true, 8 !== 8=> false:8 !== 1メッセージが表示されるため。

おわかりのように、実際にブランチに入ることはありませんelse(または、少なくともifブランチをスキップします)。

ここで、 AND演算子を使用して同じことを行いましょう。

  • 1 !== 1=> false, 1 !== 8=> true: すべての条件が有効ではないため、メッセージは表示されません。true
  • 2 !== 1=> true, 2 !== 8=> true: どちらも であるため、メッセージが表示されますtrue
  • 3 !== 1=> true, 3 !== 8=> true: どちらも であるため、メッセージが表示されますtrue
  • 4 !== 1=> true, 4 !== 8=> true: どちらも であるため、メッセージが表示されますtrue
  • 5 !== 1=> true, 5 !== 8=> true: どちらも であるため、メッセージが表示されますtrue
  • 6 !== 1=> true, 6 !== 8=> true: どちらも であるため、メッセージが表示されますtrue
  • 7 !== 1=> true, 7 !== 8=> true: どちらも であるため、メッセージが表示されますtrue
  • 8 !== 1=> true, 8 !== 8=> false: すべての条件が有効ではないため、メッセージは表示されません。true
于 2013-10-15T10:24:57.307 に答える
1

あなたはそれを行うことができますin_array

if ( !in_array($o['statuss'], array(1,8)) )
{
    $ret['result_msg'] = 'You cannot do that!';
    die(json_encode($ret));
}

使用するin_arrayと、$o['statuss']どちらにも一致しない場合、1または8そのエラーがスローされる場合

于 2013-10-15T10:26:33.177 に答える