2017-02-02 2 views
-4

Ich versuche, "OK" zu erhalten, wenn meine Bedingung falsch ist, möchte ich die gleiche beibehalten, wenn sonst als Beispiel bestellen, rate nicht, "else" Inhalt zu verschieben in "if" und "wenn" Inhalt "else",Verwenden Sie ODER innerhalb, wenn sonst Bedingung durch umgekehrte Bedingung Reihenfolge in PHP

<?php 

    //Case 1 Both False 
    //$point = 1001; //more than 100 
    //$flag = 1; //flag is = 0 

    //Case 2 First False Second True 
    //$point = 1000; //less than 1000 
    //$flag = 0; //flag is = 0 

    //Case 3 First TRUE Second FALSE 
    //$point = 100; //less than 100 
    //$flag = 1; //flag is = 1 

    $point = 1001; 
    $flag = 1; 
    ?> 

    <div class="box border"> 
    <div class="box-title"> 
    <?php if($flag == 0 || $point < 1000) { ?> 
    <h4>Not OK</h4> 
    <?php } else { ?> 
    <h4>OK</h4> 
    <?php }?> 
    </div> 

oben Skript // Fall 1 arbeitet aber Fall 2 und Fall 3 nicht beide arbeiten mit OR-Operator

I wollen, dass alle 3 Fälle in demselben Muster arbeiten

+5

Mögliche Duplikat [Verwendung OR, wenn codition Ergebnisse drucken umkehren in php] (http://stackoverflow.com/questions/41994806/use-or-in-if-codition-to-print-reverse-results-in-php) – tkausl

+0

@ tkausl, es ist nicht genau das gleiche da ich anderes Beispiel als diese Frage verwendet wurde, jetzt ist mein Beispiel ziemlich klar mit Testmaterial, ich hoffe, ich lerne von hier –

+0

Sie wollen diese alle drei Fälle mit der Ausgabe OK, richtig? – rahulsm

Antwort

2

Nach der Lektüre Ihrer Kommentare:

Es scheint, dass Sie einige Punktzahl zeigen wollen (in der else-Zweig einer if-then-else), wenn der Benutzer gleich/mehr als 1000 Punkte oder Sie schalten ein Flag um (was im Grunde bedeutet "immer Punkte anzeigen").

Normalerweise würden Sie, dass in dem if-Zweig tun:

if ($flag || $point >= 1000) 
{ 
    echo "OK"; 
} else { 
    echo "Not OK"; 
} 

Da Sie die Not OK wollen in der if-Zweig Sie den Zustand invers sein müssen, dabei bedeutet jeden Teil Umkehren die Bedingung und die Betreiber als gut:

  • $flag wird !$flag
  • $point >= 1000 bec omes $point < 1000
  • || wird &&

Ergebnis:

if (!$flag && $point < 1000) 
{ 
    echo "Not OK"; 
} else { 
    echo "OK"; 
} 

diese in eine Wahrheitstabelle schreiben:

flag  point  result 
0   < 1000  Not OK 
1   < 1000  OK 
0   >=1000  OK 
1   >=1000  OK 
+0

erwähnt, schließlich habe ich Lösung für mein logisches Problem, diese Lösung funktioniert in allen 3 Fällen Prost :) –

0

Ich habe diesen Code getestet und es funktioniert.

if(!($flag != 0 || $point >= 1000)){ 
    echo "Not OK"; 
}else{ 
    echo "OK"; 
} 
+0

bitte ich möchte inversen Zustand und möchte "OK" in else Anweisung bereits in Frage –