2016-03-21 6 views
0

複数のORステートメントの否定について頭を悩ませている。 ANDの場合 条件付きで複数のORステートメントの否定を解決する

、のは、以下の私が持っているとしましょう:

$a = 'john'; 
$b = 'mark'; 
$c = 'luke'; 

if(!($a == 'john' && $b == 'mark' && $c == 'luke')) 
{ 
    echo "Not All Apostles"; 
} 

それは何もエコー/出力ため、すべての条件が一致しないことは明らかです。また、否定はやや理解しやすい。つまり、1をtrueに、0をfalseに使用した場合、条件が一致するのは111なので、否定の場合は111でない場合は条件が真となり、101の場合は否定と一致します。私は、次のしているとき100001など

だから何が起こる:場合

if(!($a == 'john' || $b == 'david' || $c == 'luke')) 
{ 
    echo "???"; 
} 

を否定しなければ、[先に紹介した数値の表記を使用] trueに解決されます条件は、以外のものに解決000すなわち、少なくとも1つのマットchは否定が存在しない場合に真となる条件を決定する。

否定が存在するとどうなりますか?

+0

ある

if(!($a == 'john' || $b == 'mark' || $c == 'luke')) { echo "???"; } 

になり、私はあなたの質問を取得するかどうかわからないんだけど、あなたは否定して000 'よりも、何か他のもののためにTRUEを取得します。 – Rizier123

+1

https://en.wikipedia.org/wiki/De_Morgan's_laws 'not(A || B)〜not(A)&& not(B)'。また 'not(A && B)〜not(A)|| not(B) ' – Axalix

+0

@ Rizier123私はそれが否定なしで '000'以外のものについてはTRUEと思った。すなわち、少なくとも1つのマッチがある場合にのみ、否定なしでTRUEになるだろうか? –

答えて

0

私はあなたがブール比較対ビット単位と混同だと思う:

あなたはブール比較&&||ないビット演算子&|を使用しています。

trueまたはfalseにあなたの条件付き評価さのすべての比較:だから

if(!($a == 'john' && $b == 'mark' && $c == 'luke')) 
{ 
    echo "Not All Apostles"; 
} 

は、実際には:

if(false)

あなたの第2の例である

if(!(true && true && true)) 
{ 
    echo "Not All Apostles"; 
} 

if(!(true || true || true)) 
{ 
    echo "???"; 
    } 

if(!(true)) 
+0

清算していただきありがとうございます。条件の1つを誤るように編集しました。だから私はそれが 'if(true || true || false)'であると思います。これは 'if(true)'なので、否定を伴う 'if(!true)'です。つまり、OR条件付きでは、否定は否定のないAND条件と論理的に同等ですか? –

+0

基本的なブール代数では、これはANDとORの間の等価です: 'AとB =!(!Aまたは!B) '、あなたのOPのそれについて誰かがコメントしました – Ray

+0

ありがとうございました。私はそれをすべて取り組むために小さな図を描きました。乾杯。 –

関連する問題