PHP 8 Match 表达式与 PHP 7 switch case 有什么区别?

Jas*_*wel 10 php match switch-statement version-compatibility php-8

PHP 8 匹配表达式代码

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

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!
Run Code Online (Sandbox Code Playgroud)
  1. 哪一个能提供更好的性能?
  2. 匹配和切换的用例。

Jso*_*owa 14

主要区别:

  • match是表达式,switch是语句
  • match使用严格比较,switch使用松散比较
  • match 仅计算一个值,而 switch 可能计算多个值(取决于break语句)
  • match 只允许单行表达式,而 switch 允许语句块

如果您想了解更多信息,匹配表达式已经在 PHP 文档中找到了它的页面: https: //www.php.net/manual/en/control-structs.match.php

匹配表达式基于值的身份检查来分支计算。与 switch 语句类似,匹配表达式具有与多个替代项进行比较的主题表达式。与 switch 不同,它的计算结果与三元表达式非常相似。与 switch 不同,比较是身份检查 (===),而不是弱相等检查 (==)。从 PHP 8.0.0 开始,匹配表达式可用。