Heim > Backend-Entwicklung > PHP8 > Ausführliche Erläuterung des neuen Feature-Match-Ausdrucks von PHP8

Ausführliche Erläuterung des neuen Feature-Match-Ausdrucks von PHP8

Guanhui
Freigeben: 2023-02-17 11:30:02
nach vorne
4587 Leute haben es durchsucht

Ausführliche Erläuterung des neuen Feature-Match-Ausdrucks von PHP8

PHP8 alpha2 wurde veröffentlicht und hat kürzlich ein neues Schlüsselwort eingeführt: match. Die Funktion dieses Schlüsselworts ähnelt in gewisser Weise der von switch.

Ich finde das einigermaßen interessant, und die Wortübereinstimmung ist auch sehr schön, also was bewirkt es?

In der Vergangenheit haben wir möglicherweise oft „switch“ zur Wertkonvertierung verwendet, ähnlich wie:

function convert($input) {
    switch ($input) {
        case "true":
            $result = 1;
        break;
        case "false":
            $result = 0;
        break;
        case "null":
            $result = NULL;
        break;
    }
    return $result;
}
Nach dem Login kopieren

Wenn wir dann das passende Schlüsselwort verwenden, kann es ähnlich werden wie:

function converti($input) {
    return match($input) {
        "true" => 1,
        "false" => 0,
        "null" => NULL,
    };
}
Nach dem Login kopieren

Im Vergleich zu switch gibt match den Wert direkt zurück und die Zwischenvariable $result im obigen Switch-Beispiel wird nicht mehr benötigt.

Und ähnlich wie bei mehreren Fällen und einem Block von switch können auch mehrere Übereinstimmungsbedingungen zusammen geschrieben werden, wie zum Beispiel:

return match($input) {
    "true", "on" => 1,
    "false", "off" => 0,
    "null", "empty", "NaN" => NULL,
};
Nach dem Login kopieren

Es sollte beachtet werden, dass es sich von switch unterscheidet, In der Vergangenheit ist bei der Verwendung von switch möglicherweise häufig dieses seltsame Problem aufgetreten:

$input = "2 person";
switch ($input) {
    case 2:
        echo "bad";
    break;
}
Nach dem Login kopieren

Sie werden feststellen, dass tatsächlich „bad“ ausgegeben wird. Dies liegt daran, dass switch einen losen Vergleich verwendet (==). Bei Match tritt dieses Problem nicht auf. Es verwendet einen strikten Vergleich (===), was bedeutet, dass Wert und Typ vollständig gleich sein müssen.

Wenn die Eingabe nicht durch alle Bedingungen im Match erfüllt werden kann, löst match eine UnhandledMatchError-Ausnahme aus:

function convert($input) {
    return match($input) {
        "true" => 1,
    };
}
convert("false");
Nach dem Login kopieren

und Sie erhalten Folgendes:

Fatal error: Uncaught UnhandledMatchError: Unhandled match value of type string
Nach dem Login kopieren

Sie müssen sich keine Sorgen über unvorhersehbare Fehler machen, die durch unvollständige Übereinstimmungsbedingungen verursacht werden.

Empfohlenes Tutorial: „PHP8

Das obige ist der detaillierte Inhalt vonAusführliche Erläuterung des neuen Feature-Match-Ausdrucks von PHP8. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:laruence.com
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