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

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

Guanhui
Guanhuinach vorne
2020-07-14 16:00:154532Durchsuche

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;
}

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,
    };
}

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,
};

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;
}

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");

und Sie erhalten Folgendes:

Fatal error: Uncaught UnhandledMatchError: Unhandled match value of type string

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:laruence.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen