【问题标题】:How to use match expression instead of switch expression如何使用匹配表达式而不是 switch 表达式
【发布时间】:2020-11-09 00:12:07
【问题描述】:

我们可以在 PHP 8 中使用 match 表达式而不是 switch case。

如何为下面的switch case正确编写匹配表达式?

switch($statusCode) {
  case 200:
  case 300:
    $message = null;
    break;
  case 400:
    $message = 'not found';
    break;
  case 500:
    $message = 'server error';
    break;
  default:
    $message = 'unknown status code';
    break;
}

【问题讨论】:

  • 你读过这个吗:stitcher.io/blog/php-8-match-or-switch
  • @AbsoluteBeginner 事实上,他使用那篇博文来创建和回答他自己的问题,这很可能会提高他的 SO 分数。

标签: php php-8


【解决方案1】:

match 必须记住一件重要的事情。它是类型敏感的,而不是switch 语句。因此,正确地转换变量非常重要。在 HTTP 代码的情况下,它通常以字符串格式发送,例如"400".

当我们不知道它时,它可能会在调试过程中带来很多痛苦。如果$statusCode 是字符串,则始终调用默认选项。我接受的答案的修改版本:

$message = match((int) $statusCode) {
  200, 300 => null,
  400 => 'not found',
  500 => 'server error',
  default => 'unknown status code',
};

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多