Heim > Artikel > Backend-Entwicklung > Verwendung der Switch-Anweisung in PHP
In diesem Artikel wird hauptsächlich die Verwendung der Switch-Anweisung in PHP vorgestellt. Ich hoffe, dass er für alle hilfreich ist. Die
switch-Anweisung ähnelt einer Reihe von IF-Anweisungen mit demselben Ausdruck. Es gibt viele Situationen, in denen Sie dieselbe Variable (oder denselben Ausdruck) mit vielen verschiedenen Werten vergleichen und je nachdem, welchem Wert sie entspricht, unterschiedlichen Code ausführen müssen. Genau dafür ist die switch-Anweisung gedacht.
Hinweis: Beachten Sie, dass sich die continue-Anweisung im Gegensatz zu anderen Sprachen ähnlich wie break verhält, wenn sie auf switch angewendet wird. Wenn Sie einen Schalter in einer Schleife haben und mit der nächsten Iteration in der äußeren Schleife fortfahren möchten, verwenden Sie continue 2.
Die folgenden beiden Beispiele verwenden zwei unterschiedliche Methoden, um dasselbe zu erreichen, eine mit einer Reihe von if-Anweisungen und die andere mit einer switch-Anweisung:
Beispiel Nr. 1: Switch-Struktur
<?php if ($i == 0) { echo "i equals 0"; } elseif ($i == 1) { echo "i equals 1"; } elseif ($i == 2) { echo "i equals 2"; } switch ($i) { case 0: echo "i equals 0"; break; case 1: echo "i equals 1"; break; case 2: echo "i equals 2"; break; } ?>
Beispiel Nr. 2 Die Schalterstruktur kann Zeichenfolgen verwenden
<?php switch ($i) { case "apple": echo "i is apple"; break; case "bar": echo "i is bar"; break; case "cake": echo "i is cake"; break; } ?>
Wichtige Punkte: (Das habe ich noch nie zuvor gemeistert!)
Um Fehler zu vermeiden, ist es wichtig zu verstehen, wie der Schalter implementiert wird. Die Switch-Anweisungen werden Zeile für Zeile (eigentlich Anweisung für Anweisung) ausgeführt. Zunächst wird kein Code ausgeführt. Nur wenn der Wert in einer Case-Anweisung mit dem Wert des Switch-Ausdrucks übereinstimmt, beginnt PHP mit der Ausführung der Anweisung bis zum Ende des Switch-Blocks (z. B. einer Return-Anweisung) oder bis die erste Break-Anweisung auftritt. Wenn Sie am Ende des Anweisungssegments des Falls kein break schreiben, führt PHP das Anweisungssegment im nächsten Fall weiter aus. Zum Beispiel:
<?php switch ($i) { case 0: echo "i equals 0"; case 1: echo "i equals 1"; case 2: echo "i equals 2"; } ?>
Besonderer Hinweis: Wenn $i gleich 3 ist, führt PHP keine Echo-Anweisung aus! Wenn $i jedoch gleich 0 ist, führt PHP alle Echo-Anweisungen aus! Wenn $i gleich 1 ist, führt PHP die nächsten beiden Echo-Anweisungen aus. Nur wenn $i gleich 2 ist, erhalten Sie das „erwartete“ Ergebnis – nur „i gleich 2“. Daher ist es wichtig, Break-Anweisungen nicht zu vergessen (auch wenn Sie in manchen Fällen bewusst darauf verzichten möchten).
[Effizienz] In der Switch-Anweisung wird die Bedingung nur einmal ausgewertet und mit jeder Case-Anweisung verglichen. Die Bedingung wird in der elseif-Anweisung erneut ausgewertet. Wenn die Bedingung komplexer ist als ein einfacher Vergleich oder sich viele Male in einer Schleife befindet, kann es schneller sein, eine Switch-Anweisung zu verwenden.
Anweisungen in einem Fall können auch leer sein, wodurch die Kontrolle lediglich auf die Anweisungen im nächsten Fall übertragen wird.
<?php switch ($i) { case 0: case 1: case 2: echo "i is less than 3 but not negative"; break; case 3: echo "i is 3"; } ?>
Ein Sonderfall von case ist default. Es entspricht jedem Fall, der mit keinem anderen Fall übereinstimmt. Beispiel:
<?php switch ($i) { case 0: echo "i equals 0"; break; case 1: echo "i equals 1"; break; case 2: echo "i equals 2"; break; default: echo "i is not equal to 0, 1 or 2"; } ?>
case expression kann ein beliebiger Ausdruck sein, der einen einfachen Typ ergibt, also eine Ganzzahl oder Gleitkommazahl sowie eine Zeichenfolge. Arrays oder Objekte können nur verwendet werden, wenn sie auf einfache Typen dereferenziert werden.
[Praktisch] Schreiben Sie basierend auf den oben genannten Wissenspunkten eine Funktion wie diese: Berechnen Sie die Anzahl der Bytes, die tatsächlich durch den Kapazitätswert dargestellt werden
<?php /** * 返回字节数 * * @param string $val 如 400M */ function return_bytes($val = '') { $val = trim($val); $last = strtolower($val{strlen($val)-1}); switch ($last) { case 'g': $val *= 1024; case 'm': $val *= 1024; case 'k': $val *= 1024; } return $val; } $memorylimit = ini_get('memory_limit'); echo $memorylimit, '<br/>'; echo return_bytes($memorylimit); 输出: 400M 419430400
Besonderer Hinweis: Wenn $val = 400M, Fall 'm' ist Hit, die $val *= 1024; darunter wird ausgeführt, aber da es keine Break-Sprache gibt, wird case 'k' weiterhin getroffen und die $val *= 1024; Insgesamt entspricht es also der Ausführung 400*1024*1024.
Zusammenfassung: Das Obige ist der gesamte Inhalt dieses Artikels, ich hoffe, dass er für das Studium aller hilfreich sein wird.
Verwandte Empfehlungen:
Gemeinsame PHP-Dateioperationsfunktionen und Beispielanalyse
PHP-Implementierungsmethode zum Erhalten von Dateisuffixnamen
Das obige ist der detaillierte Inhalt vonVerwendung der Switch-Anweisung in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!