2016-03-25 16 views
3

Was unterscheidet zwischenPHP - Unterschied zwischen Pause und weiter in Schaltergehäuse

switch (variable) { 
     case 'value': 
     # code... 
     break; 

     case 'value': 
     # code... 
     break; 
} 

und diesem

switch (variable) { 
     case 'value': 
     # code... 
     continue; 

     case 'value': 
     # code... 
     continue; 
} 

Es ist wirklich anderes Ergebnis oder nur gleich?

+4

Lesen Sie den Hinweis in der Anleitung von [weiter] (http://php.net/manual/en/control-structures.continue.php), oder einfach nur das ganze .. – Naruto

+0

Wenn Sie wollen, dass Code wann ausgeführt wird Der Fall entspricht mehr als 1 Wert, Sie verwenden immer noch "Pause"; case "value1": und darunter) case "value2": dann unter dem - der auszuführende Code –

Antwort

0

Hier ist ein einfaches Beispiel-Code mit den beiden Schalter Fälle oben

erwähnt
<?php 
    $variable = 20; 
    echo "Normal<br/>"; 
    switch ($variable) { 
     case '20': 
      echo "twenty"; 
     break; 
     case '21': 
      echo "twenty one"; 
     break; 
    } 

    echo "<br/><br/>With Continue<br/>"; 
    switch ($variable) { 
     case '20': 
      echo "twenty"; 
     continue; 
     case '21': 
      echo "twenty one"; 
     continue; 
    } 
?> 

Wenn ich über Code ausführen habe ich ausgegeben folgende

Normal 
twenty 

With Continue 
twenty 

Wie?

Arbeiten von break-Anweisung

Break statement Ursachen Codeausführung aus dem Block kommen und im nächsten Anweisungen ausführen, weil deren Anweisung wechseln nur in einem Fall Aussage und Ausfahrt aus Schalterblock ausgeführt wird, ohne dass andere Fall Blöcke ausgeführt wird.

Arbeiten von Aussage Weiter

Continue statement bei Loops Schleife verursacht Ausführung der aktuellen Iteration der Schleife zu stoppen und für die nächste Iteration der Schleife gehen (wenn überhaupt vorhanden), aber im Fall der switch-Anweisung berücksichtigt wird, als eine Schleifenanweisung, aber keine nächsten Iterationen, die eine Exit-Switch-Anweisung verursachen.

können wir eine switch-Anweisung haben auch ohne Pause Aussagen wie diese

<?php 
    $variable = 20; 
    echo "Normal"; 
    switch ($variable) { 
     case '19': 
      echo "<br/>Nineteen"; 
     case '20': 
      echo "<br/>twenty"; 
     case '21': 
      echo "<br/>twenty one"; 
     case '23': 
      echo "<br/>twenty three"; 
    } 
?> 

Die Ausgabe des obigen Codes wird

Normal 
twenty 
twenty one 
twenty three 

dh alle case-Anweisungen nach dem Fall der Ausführung in dem ersten Spiel ist gefunden.

+1

Sie sollten Ihre Antwort aktualisieren, wie die offizielle Dokumentation besagt: * In PHP wird die switch-Anweisung als Schleifenstruktur für die Zwecke betrachtet von weiter. Weiter verhält sich wie Pause (wenn keine Argumente übergeben werden). * – Technoh

+0

Änderungen implementiert, danke für den Vorschlag @Technoh –

1

In PHP funktionieren die obigen beiden Codes auf die gleiche Weise. Hier verhindern die break und continue Anweisung Kontrolle nächste case gehen. Das ist die continue handelt genau wie break hier. Auch der Schalter soll nur einmal ausgeführt werden. Es ist keine Schleife. Daher ist continue hier nicht relevant.

Hinweis: Wenn es eine Schleife gibt, die diese switch Anweisung enthält, wird das Ergebnis anders sein.

1

Dies ist ein spezieller Fall für PHP, weil, wie sie in den official documentation erklärte:

Hinweis: In PHP die switch-Anweisung eine Schleifenstruktur für die Zwecke der weiterhin in Betracht gezogen wird. continue verhält sich wie break (wenn keine Argumente übergeben werden). Wenn sich ein Schalter in einer Schleife befindet, fahren Sie fort mit 2 wird mit der nächsten Iteration der äußeren Schleife fortfahren.

Also im Wesentlichen bedeutet es, dass es keinen tatsächlichen Unterschied zwischen Ihren beiden Beispielen gibt. Aus Gründen der Klarheit denke ich, dass es am besten wäre, break zu verwenden, da dies der Standard in anderen Sprachen ist. Beachten Sie auch, dass Sie continue 2 (oder 3, 4 ...) verwenden können, um zur nächsten Iteration einer Schleife zu gelangen, wenn sich der Schalter innerhalb einer Schleife (oder mehr) befindet.