Das match-Ausdruck in PHP 8 – switch, nur besser
match ist wie switch, aber ein Ausdruck mit Rückgabewert, striktem Vergleich und ohne break-Fallen. Für Zuordnungen ist es kürzer, sicherer und besser lesbar.
Der klassische switch hat zwei Tücken: Man vergisst leicht ein break (und fällt in den nächsten Fall durch), und er vergleicht locker (0 == "text" war lange true). PHP 8 bringt mit match eine saubere Alternative.
switch vs. match
// vorher – umständlich, break-anfällig
switch ($status) {
case 'paid': $label = 'Bezahlt'; break;
case 'open': $label = 'Offen'; break;
default: $label = 'Unbekannt';
}
// mit match – ein Ausdruck, direkt zugewiesen
$label = match ($status) {
'paid' => 'Bezahlt',
'open' => 'Offen',
default => 'Unbekannt',
};Drei Gewinne auf einen Blick: match gibt einen Wert zurück (du weist ihn direkt zu), es gibt kein Durchfallen (kein break nötig), und es vergleicht streng mit === – '1' trifft also nicht auf 1.
Mehrere Werte pro Zweig
Kommagetrennt fasst du Fälle zusammen:
$typ = match ($code) {
200, 201, 204 => 'Erfolg',
400, 404, 422 => 'Client-Fehler',
500, 502, 503 => 'Server-Fehler',
default => 'Sonstiges',
};Ein wichtiger Unterschied: Fehlt ein Zweig und kein default, wirft match eine UnhandledMatchError – statt still null zu liefern wie ein switch ohne Treffer. Das ist gewollt: Ein unbehandelter Fall ist meist ein Bug, den du sofort bemerken willst.
Für echte Verzweigungen mit mehreren Anweisungen pro Fall bleibt if/switch richtig – für saubere Zuordnungen ist match das modernere Werkzeug.
Gut lesbaren, sicheren PHP-Code schreibe ich in jedes Projekt. Wenn du eine Website mit eigenem Backend brauchst: bymw.de.
Quellen
Du brauchst mehr als ein Snippet?
Ich entwickle Android-Apps in Kotlin und moderne Websites für Selbstständige und kleine Unternehmen — von der ersten Idee bis zum Release.
Projekt anfragen →Verwandte Snippets
Benannte Argumente in PHP 8 – Schluss mit true, false, null, true
Ein Aufruf wie erstelle($a, true, false, null, true) sagt nichts darüber, was die Wahrheitswerte bedeuten. Mit benannten Argumenten steht es im Aufruf – und optionale Parameter lassen sich überspringen.
Beträge und Zahlen in PHP formatieren – number_format, sprintf und Intl
1234.5 ist keine Anzeige, sondern ein Wert. Auf der Rechnung soll 1.234,50 € stehen, in der API 1234.50 und im Dateinamen 1234-50. Drei Aufgaben, drei Werkzeuge – und ein Fehler, den fast jeder einmal macht.
Reguläre Ausdrücke in PHP – benannte Gruppen statt $m[3]
Ein Treffer-Array aus Zahlen liest sich nach zwei Wochen wie eine Geheimschrift. Benannte Gruppen geben jedem Teil einen Namen – und preg_replace_callback ersetzt damit Dinge, die kein einfacher Ersetzungsstring kann.