Löst einige Probleme der switch-Kontrollstruktur.
statt:
switch (1) {
    case 0:
        $y = 'Foo';
        break;
    case 1:
        $y = 'Bar';
        break;
    case 2:
        $y = 'Baz';
        break;
    case 3:
    case 4:
        $y = 'Dasselbe für 3 und 4';
        break;
}
echo $y;
Kann man jetzt schreiben:
echo match (1) {
    0 => 'Foo',
    1 => 'Bar',
    2 => 'Baz',
    3,4 => 'Dasselbe für 3 und 4' 
};
Eine nicht abgefangene Condition erzeugt einen UnhandledMatchError.
<?php
$condition = 5;
try {
    match ($condition) {
        1, 2 => foo(),
        3, 4 => bar(),
    };
} catch (\UnhandledMatchError $e) {
    var_dump($e);
}
Details siehe https://www.php.net/manual/en/control-structures.match.php