2016-03-21 24 views
0

içinde birden çok OR deyiminin olumsuzluklarının çözülmesi Başımın birden çok OR deyiminin reddedilmesiyle ilgili sorun yaşıyorum. AND durumunda Koşullu bir

, en alttaki ı olduğunu varsayalım:

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

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

Hiçbir yankı/çıkış nedeniyle tüm koşullar eşleşme olduğu açıktır. Ayrıca, olumsuzlama anlamak biraz kolay. Diğer bir deyişle, true için 1 ve false için 0 kullanıyor olsaydım, koşul yalnızca yalnızca 111 için çözülürse eşleşebilir, bu nedenle, olumsuzlama iledeğil, 101 varsa negatifleşme eşleşmesi doğruysa, koşul doğrudur 100, 001 vb

aşağıdakileri sorunum ne olur: durum dışında herhangi bir şey için giderir [önceki tanıtıldı sayısal gösterimi kullanılarak] eğer

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

, doğru sonucuna varılır 000, yani en az bir mat olmalı Eğer olumsuzluk mevcut değilse, hatayı düzeltmek için koşul için ch.

Peki, mevcut olumsuzluk ile tam olarak ne olur?

+0

olduğunu

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

Oldu, ancak olumsuzlama ile 000' 'den başka bir şey için DOĞRU olsun. – Rizier123

+1

https://en.wikipedia.org/wiki/De_Morgan's_laws 'değil (A || B) ~ not (A) && not (B)'. Ayrıca değil (A && B) değil (A) || değil (B) ' – Axalix

+0

@ Rizier123 Olumsuzluk olmadan '000' dışında herhangi bir şey için DOĞRU olabileceğini düşündüm, yani sadece en az bir maç varsa bu olumsuzluk olmadan DOĞRU olacak mı ?! –

cevap

0

Sana boolean karşılaştırma vs Bitwise ile kafanın karışık olduğunu düşünüyorum: Sen boolean karşılaştırma && ve || değil bitsel operatörleri & ve | kullandığınız

.

true veya false Sizin koşullu değerlendirir Her karşılaştırması:

Yani:

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

aslında mı: if(false)

Sizin ikinci örnektir

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

:

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

da Sorunuzun olsun emin değilim

if(!(true)) 
+0

Açıklama için teşekkürler. Koşullardan birini yanlış yapmak için soruyu düzenledim. Yani sanırım eğer bu (eğer true (true) true || false) '' (true (doğru) 'ise, bu da 'if (! True)' ile negatiftir. Öyleyse, OR şartlı ifadesiyle, olumsuzlama, mantıksal olarak, olumsuzluk olmadan AND koşullarına eşdeğer midir? –

+0

Temel Boole cebirinde bu AND ile OR arasındaki eşdeğerdir: 'A ve B =! (!A veya! B) ', birisi OP – Ray

+0

'unuzda bunun hakkında yorum yaptı Çok teşekkürler. Hepsini çözmek için küçük bir diyagram yaptım. Şerefe. –