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