PHP8 match表达式学习

江河/ 2023年06月30日/ PHP/ 浏览 1651

PHP8 新增了 match 表达式,match 和 switch 颇为相象。


与 switch 不同点是,它会像三元表达式一样求值。 与 switch 另一个不同点,它的比较是严格比较( ===)而不是松散比较(==)。


$return_value = match (subject_expression) {
    single_conditional_expression => return_expression,
    conditional_expression1, conditional_expression2 => return_expression,
};


match 表达式跟 switch 语句相似,但是有以下关键区别:


1. match 是表达式,所以尾部必须有 ; 。


2. match 比较分支值,使用了严格比较 (===), 而 switch 语句使用了松散比较。


3. match 表达式会返回一个值,但不是必须使用。


4. match 的分支不会像 switch 语句一样, 落空时执行下个 case。


5. match 表达式必须彻底列举所有情况。


使用举例:


$food = 'cake';

$return_value = match ($food) {
    'apple' => 'This food is an apple',
    'bar' => 'This food is a bar',
    'cake' => 'This food is a cake',
};

var_dump($return_value);


发表评论

暂无评论,抢个沙发...

客服 工单