#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. 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.