Heim >Backend-Entwicklung >PHP8 >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!