Выражение Match по сути аналогично оператору Switch и появилось в PHP 8.
Ключевое слово — match, поэтому давайте воссоздадим оператор переключения ниже:
$paymentStatus = 1;
switch ($paymentStatus) {
case 1:
echo 'Paid';
break;
case 2:
case 3:
echo 'Payment Declined';
break;
case 0:
echo 'Pending Payment';
break;
default:
echo 'Unknown Payment Status';
break;
}
Внутри фигурных скобок мы формируем пары значений, где ключом является отдельное условное выражение, а значением — возвращаемое выражение.$paymentStatusDisplay = match ($paymentStatus) {
1 => 'Paid',
2,3 => 'Payment Declined',
0 => 'Pending Payment',
default => 'Unknown Payment Status',
};
echo $paymentStatusDisplay;Давайте поговорим о различиях
Первое отличие состоит в том, что выражение соответствия на самом деле является выражением и возвращает значение, поэтому его можно присвоить переменной. Это может быть практически любой тип выражения; например, мы могли бы использовать функцию, возвращающую значение.
Второе отличие состоит в том, что переключатель требует использования оператора Break, чтобы избежать некоторых неожиданных результатов, таких как оценка других операторов Case, в то время как оператор match возвращает значение, как только совпадение найдено.
Третье отличие состоит в том, что в операторе switch не требуется значение по умолчанию, тогда как в match генерируется фатальная ошибка, если соответствующее совпадение не найдено ни в одном из перечисленных случаев и не указано значение по умолчанию.
Четвертое отличие состоит в том, что выражение match выполняет строгое сравнение, а оператор switch — свободное сравнение. Обе стороны являются выражениями, и мы можем использовать сложные выражения, вызовы функций и логические операторы внутри условного выражения.
$paymentStatus = false;
// switch print 'Pending Payment'
// match print 'Unknown Payment Status'Следует отметить, что выражение match не исключает использования оператора switch, поскольку у него все еще есть варианты использования. Например, match возвращает значение, как только совпадение найдено, тогда как с помощью switch вы можете выполнить несколько операторов.
Комментарии (0)
Пока нет комментариев — будьте первым.