В чем разница между выражением соответствия PHP 8 и случаем переключения PHP 7?

#php #switch-statement #match #php-8

#php #switch-statement #совпадение #php-8

Вопрос:

Код выражения соответствия PHP 8

 echo match (8.0) {
    '8.0' => "Oh no!",
     8.0 => "This is what I expected",
};
//> This is what I expected
 

Код переключения PHP 7

 switch (8.0) {
  case '8.0':
    $result = "Oh no!";
    break;
  case 8.0:
    $result = "This is what I expected";
    break;
}
echo $result;
//> Oh no!
 
  1. Какой из них обеспечивает лучшую производительность?
  2. Используйте случай совпадения и переключения.

Комментарии:

1. wiki.php.net/rfc/match_expression_v2

2. Есть хорошая статья о сравнении: stitcher.io/blog/php-8-match-or-switch

Ответ №1:

Основные различия:

  • match — это выражение, а switch — оператор
  • match использует строгое сравнение, в то время как switch использует loose
  • match вычисляет только одно значение, в то время как switch может вычислять больше (в зависимости от оператора break)
  • match допускает только однострочное выражение, в то время как switch допускает блок операторов

У выражения соответствия уже есть своя страница в документации PHP, если вы хотите узнать больше: https://www.php.net/manual/en/control-structures.match.php

Выражение соответствия выполняет оценку на основе проверки подлинности значения. Аналогично оператору switch, выражение соответствия имеет подлежащее выражение, которое сравнивается с несколькими альтернативами. В отличие от switch, он будет вычисляться до значения, очень похожего на троичные выражения. В отличие от switch, сравнение представляет собой проверку идентичности (===), а не слабую проверку равенства (==). Выражения соответствия доступны начиная с PHP 8.0.0.