PHP 8 匹配表达式
学习 PHP 8 中更安全、更简洁的 match 表达式,替代传统的 switch 语句。 · 难度:入门 · +15XP
什么是匹配表达式?
PHP 8 引入了 match 表达式,它是一种更现代、更严格的条件分支结构,相比传统的 switch 语句,它使用严格比较(===),并且会返回值。match 表达式不会像 switch 那样出现“贯穿”(fall-through)问题,也不需要使用 break 来中断。
基本语法
<?php
$status = 200;
$result = match ($status) {
200 => 'OK',
404 => 'Not Found',
500 => 'Internal Server Error',
default => 'Unknown Status',
};
echo $result; // 输出: OK注意:match 使用 => 箭头语法,每个分支必须是表达式(可以是一个值、计算或函数调用)。
对比 switch 和 match
| 特性 | switch | match |
|---|---|---|
| 比较方式 | 宽松比较(==) | 严格比较(===) |
| 返回值 | 不返回 | 有返回值 |
| 贯穿问题 | 有 | 无 |
| 多个条件 | case 穿透 | 逗号分隔 |
多条件匹配
<?php
$day = 'Saturday';
$type = match ($day) {
'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday' => '工作日',
'Saturday', 'Sunday' => '周末',
default => '无效日期',
};
echo $type; // 输出: 周末多个值用逗号分隔即可,match 会检查是否匹配其中任意一个。
练习提示
尝试修改 starter_code 中的 $grade 变量,为不同分数段(如 90-100 为 A,80-89 为 B,70-79 为 C,低于 70 为 D)编写 match 表达式。提示:match 可以结合条件判断,例如使用 true 作为主题。