📜  php 8 匹配表达式 - PHP (1)

📅  最后修改于: 2023-12-03 15:18:19.205000             🧑  作者: Mango

PHP 8 利器:匹配表达式

PHP 8 中新增了一个非常实用的特性——匹配表达式(match expression),在语法上类似于 switch 语句,但更加简洁易读。匹配表达式可以比传统的 switch 语句更加清晰地表达逻辑,且还可以对值进行类型判断。

基本语法
$value = match($input) {
    value1 => action1,
    value2 => action2,
    default => defaultAction
};
  • $input:要匹配的值
  • value1、value2:匹配的值(可以为任意类型)
  • action1、action2:匹配成功时执行的代码块
  • default:当没有匹配项时,执行的代码块
  • $value:返回的值(如果没有返回值,则默认返回 null)
示例代码
$result = match ($score) {
    100 => "Perfect Score",
    90 => "Excellent",
    80 => "Good",
    70 => "Average",
    60 => "Below Average",
    default => "Failed"
};

echo $result;

上述代码中,根据成绩 $score 的值来匹配对应的字符串,如果没有匹配到任何值,则返回 "Failed"。

高级用法

匹配表达式还支持一些高级用法,如:

使用逗号分隔多个匹配值
$value = match($input) {
    value1, value2 => action1,
    value3 => action2,
    default => defaultAction
};

在上面的示例中,如果 $input 的值等于 value1 或 value2,则执行 action1,否则继续匹配。

匹配项值操作

在匹配项后面,可以使用操作符进行处理,如:

$value = match($input) {
    value1 + value2 => action1,
    value3 * 2 => action2,
    default => defaultAction
};

在上面的示例中,如果 $input 的值等于 value1 + value2,则执行 action1,如果 $input 的值等于 value3 的两倍,则执行 action2。

类型判断

可以使用 instanceof 操作符进行类型判断,如:

$value = match($input) {
    string => $input,
    int => (string) $input,
    default => null
};

在上面的示例中,如果 $input 的类型是字符串,则返回 $input;如果 $input 的类型是整数,将其转换成字符串返回;否则返回 null。

总结

匹配表达式是 PHP 8 中新增的特性之一,它可以让代码逻辑更加清晰简洁,同时还支持多种高级用法,使用起来非常灵活。如果你是 PHP 开发者,那么一定要掌握这个非常实用的特性。