Ответ
match — это выражение для условного сопоставления, появившееся в PHP 8.0. Оно является более строгой и выразительной альтернативой оператору switch.
Ключевые отличия от switch:
- Возвращает значение:
match— это выражение, результат которого можно присвоить переменной. - Строгое сравнение: Используется оператор
===(идентично), а не==(равно). - Нет проваливания (fall-through): Каждая ветка выполняется независимо, не требуется
break. - Обязательное совпадение: Если ни одно условие не совпало и не указана ветка
default, будет выброшено исключениеUnhandledMatchError.
Пример использования:
$httpCode = 404;
$message = match ($httpCode) {
200, 201 => 'Success',
301 => 'Moved Permanently',
404 => 'Not Found',
500 => 'Internal Server Error',
default => 'Unknown HTTP Code',
};
echo $message; // Выведет: Not Found
Поддержка выражений в условиях:
$result = match (true) {
$age < 18 => 'Minor',
$age >= 18 && $age < 65 => 'Adult',
default => 'Senior',
};