PHP: Detaillierte Erläuterung der Nutzungsunterschiede und der Betriebseffizienz des Switch-Gehäuses und ggf

伊谢尔伦
Freigeben: 2023-03-11 09:58:02
Original
3195 Leute haben es durchsucht

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 Anweisung continue 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 weiter 2.

Die folgenden zwei Beispiele verwenden zwei verschiedene Methoden, um dasselbe zu erreichen, eine mit einer Reihe von if-Anweisungen und die andere mit einer switch-Anweisung:

Beispiel #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;
}
?>
Nach dem Login kopieren

Beispiel #2 Schalterstruktur kann String 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;
}
?>
Nach dem Login kopieren

Wichtiger Punkt: (Das habe ich noch nie gemeistert!)

Um Fehler zu vermeiden, ist es sehr wichtig zu verstehen, wie der Wechsel ausgeführt 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 PHP beginnt mit der Ausführung von Anweisungen erst am Ende des Switch-Programmsegments (z. B. der Return-Anweisung) oder bis die erste Break-Anweisung auftritt. Wenn break nicht am Ende des Anweisungsabschnitts geschrieben wird, verwendet PHP Die Ausführung des Anweisungssegments im nächsten Fall wird fortgesetzt. Zum Beispiel:

<?php
switch ($i)
{
    case 0:
        echo "i equals 0";
    case 1:
        echo "i equals 1";
    case 2:
        echo "i equals 2";
}
?>
Nach dem Login kopieren

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.

Die Anweisung in einem Fall kann auch leer sein, wodurch die Kontrolle einfach auf die Anweisung 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";
}
?>
Nach dem Login kopieren

Ein Sonderfall ist die Vorgabe. 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";
}
?>
Nach dem Login kopieren

Case-Ausdruck kann jeder Ausdruck sein, der einen einfachen Typ ergibt, d. h. 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 tatsächlich dargestellten Bytes durch den Kapazitätswert

<?php
/**
 * 返回字节数
 *
 * @param string $val 如 400M
 */
function return_bytes($val = &#39;&#39;)
{
    $val = trim($val);
    $last = strtolower($val{strlen($val)-1});
    switch ($last)
    {
        case &#39;g&#39;:
            $val *= 1024;
        case &#39;m&#39;:
            $val *= 1024;
        case &#39;k&#39;:
            $val *= 1024;
    }
 
    return $val;
}
 
$memorylimit = ini_get(&#39;memory_limit&#39;);
echo $memorylimit, &#39;<br/>&#39;;
echo return_bytes($memorylimit);
Nach dem Login kopieren

Ausgabe:

400M
419430400
Nach dem Login kopieren

Besonderer Hinweis: Wenn $val = 400M, wird die Groß-/Kleinschreibung „m“ getroffen und $val darunter *= 1024; wird ausgeführt, aber da es keine Break-Sprache gibt, wird weiterhin die Anweisung $val *= 1024; darunter ausgeführt, was insgesamt der Ausführung von 400 entspricht *1024*1024.

Das obige ist der detaillierte Inhalt vonPHP: Detaillierte Erläuterung der Nutzungsunterschiede und der Betriebseffizienz des Switch-Gehäuses und ggf. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage