2017-03-14 7 views
1

Ich versuche nur, wie einfach Zahlen von 1 bis 10 unter Verwendung von für Schleife zu drucken:PHP: Verwirrung, wenn Bedingung

for($i = 0; $i <= 10; $i++){ 
    if($i != 4 || $i != 6){ 
     echo $i."<br/>"; 
    } 
} 

Ausgang:

0 
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 

ich mag nur die Ausgabe von 0 bis 10, aber in der Ausgabe sollte nicht Nummer 4 und 6. Es funktioniert gut, wenn ich && benutze aber nicht funktioniert, wenn || Ich bin nicht der Punkt, warum dies passiert, ich denke, es sollte mit || arbeiten.

+0

* "Ich denke, es sollte mit || funktionieren." * - Warum denkst du? '$ i! = 4 || $ i! = 6 'ist immer wahr.Es könnte nur falsch für ein "i" sein, das gleichzeitig "4" und "6" ist. – mkl

+0

nein, es funktioniert mit '&&' –

Antwort

4

Sie wollen nicht entweder 4 oder 6 drucken, so dass Sie && verwendet werden soll.

Die Anweisung if($i != 4 || $i != 6) lösen, wenn $i bis 4, oder nicht gleich ist, wenn $i nicht gleich 6 ist eine Überlegung 4 bis 6 nicht gleich ist, ist es in beiden Fällen auslösen. Es wird $i = 4 erreichen und erkennen, dass $i nicht gleich 6 ist. Dies wird in den Zustand eintreten, wie Sie sagen, es muss nur für der eine oder andere gelten.

Die Aussage if($i != 4 && $i != 6) impliziert, dass $i nicht gleich zu 4 und$i nicht gleich 6 Beide ist Bedingungen zugleich wahr halten müssen. Wenn $i = 4, $i != 6 wird wahr, aber $i != 4 wird sein falsch. Beide Bedingungen müssen stimmen, also wird es scheitern. Im Wesentlichen diese neu geschrieben werden könnte, wie:

for($i = 0; $i <= 10; $i++){ 
    if($i != 4) { 
    if($i != 6) { 
     echo $i."<br/>"; 
    } 
    } 
} 

Um über die Zahlen 4 und 6 in der Schleife zu überspringen, müssen Sie die and Bedingung verwenden:

for($i = 0; $i <= 10; $i++){ 
    if($i != 4 && $i != 6){ 
     echo $i."<br/>"; 
    } 
} 

hoffte, das hilft!

1

Sie möchten &&. Es würde nicht mit || funktionieren; das bedeutet etwas anderes.

"x & & y" bedeutet "nur wahr, wenn x wahr ist und y ist auch wahr; andernfalls falsch."

"x || y" bedeutet "wahr, wenn entweder x wahr oder y wahr ist; nur falsch, wenn beide falsch sind." Das Gegenpositiv (d. H. "Entgegengesetzt") von ($i != 4 && $i != 6) ist ($i == 4 || $i == 6).

im || Mischen ohne die Vergleiche Austausch als auch Mittel, in Ihrem Fall „true, wenn $i nicht 4, oder auch dann, wenn $i nicht 6 ist“ Da einer dieser Fälle immer wahr sein muss, ist das Ergebnis auch immer wahr.

0
<?php for ($i=0; $i < 10 ; $i++) { 
if ($i != 4 && $i !=6){ 
    echo $i."<br>";}} 
?> 
+0

Ich brauche eine Erklärung ... ich weiß, wie es geht. –

+0

Da Ihre Bedingung AND-Operation und nicht ODER-Operation für mehr Details auswählen, möchten Sie diese http://php.net/manual/en/language.operators.php lesen –