php - 如何使用匹配表达式而不是 switch 表达式
问题描述
我们可以在 PHP 8 中使用 match 表达式而不是 switch case。
如何为以下 switch 案例正确编写匹配表达式?
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',
};
推荐阅读
- android - 无法同步项目,错误:无法创建 Jar 文件
- node.js - 在 MongoDB 中返回记录 beetwen 2 年
- c - C语言:二进制的无效操作数+
- algorithm - 数据集的噪声形状是否可能会极大地改变数据集的拟合结果?
- python - Azure 函数读取和写入 Blob 存储引发内部 500 错误
- r - 尚不支持 foreach %dopar% 长向量:memory.c:3782
- java - Bytebuddy - Stackmanipulation 实现 lambda 调用
- python - 为什么属性不更新?
- flutter - Xcode:不支持的操作系统版本,iphone os 版本 14.7 & Xcode 12.5.1
- angular - Angular/Typescript:声明传递给“find”的lambda的返回类型