php - 如何使用匹配表达式而不是开关表达式

标签 php php-8

我们可以在 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;
}

最佳答案

有一件重要的事情必须记住match .是类型敏感 ,而不是 switch陈述。因此,正确地转换变量非常重要。在 HTTP 代码的情况下,它通常以字符串格式发送,例如"400" .
当我们不知道它时,它可能会在调试过程中带来很多痛苦。如 $statusCode是一个字符串,默认选项将始终被调用。我接受的答案的修改版本:

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

关于php - 如何使用匹配表达式而不是开关表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62983592/

相关文章:

PHP Mysql复制一条记录到不同的数据库

php - json_decode 和内存清除

php - 按时间/日期对我的留言簿帖子进行排序 (php/mySQL)

php - OM\Db::query(string $statement) 的声明必须与 PDO::query 兼容

php - 获取 PHP 8 Socket 的 id

apache - PHP 升级到 8,带有错误选项 - .htaccess 文件中的索引

php - HTML anchor 标签下载,文件名属性

javascript - 带选择列表的自动编号

php - 将 php 升级到版本 8 后 php-cs-fixer 出现问题

PHP 8 : Assign "resource" as property, 参数,或返回类型