PHP8.0 match表达式

作者: 温新

分类: 【PHP基础】

阅读: 1989

时间: 2021-12-02 14:43:12

match 语法:

$returnValue = match (exp) {
  	// 单条件表达式
    single_conditional_expression => return_expression,
    // 多条件表达式
    conditional_expression1, conditional_expression2 => return_expression,  
};

match 表达式基于值的一致性进行分支计算。 match表达式和 switch 语句类似, 都有一个表达式主体,可以和多个可选项进行比较。 switch 不同点是,它会像三元表达式一样求值。switch 另一个不同点,它的比较是严格比较( ===)而不是松散比较(==

macth注意点:

  • match使用 ===进行严格比较;
  • match表达式必须以;结尾;

match表达式与switch的区别:

  • match 比较分支值,使用了严格比较 (===), 而 switch 语句使用了松散比较。
  • match 表达式会返回一个值。
  • match 的分支不会像 switch 语句一样, 落空时执行下个 case。
  • match 表达式必须彻底列举所有情况。

单条条件基础用法:

$num = 10;

$result = match ($num) {
    5   =>  '我返回了 ' . $num,
    10  =>  '我返回了 ' . $num,
    15  =>  '我返回了 ' . $num,
};

// 10
echo $result;

多条件用法:

<?php
  
$language = 'php';

$result = match ($language) {
    'php'   =>  'PHP是世界上最好的语言',
    'vue','react'   =>  '都是js框架',
    default =>  '啥也不是',
};

// PHP是世界上最好语言
echo $result;

当$language为 vuereact时,将输出都是js框架

当$language为 其他值时,输出 default所默认的结果 啥也不是

表达式用法

<?php
  
class A
{
    public function getA()
    {
        return 10;
    }
}
$a = new A;


function num ($num) {
    return $num * 2;
}

function getWebName()
{
    return '自如初';
}

$num = 10;
$result = match ($num) {
    $a->getA() =>   getWebName(),
    5          =>   num($num),
};

echo $result;

我是温新

每天进步一点点,就一点点

我很喜欢的一句话,分享一下,出自《SQL进阶》

这个世界没有一天是无聊的,只不过是你懒惰已久的感官无法发现眼前事物的乐趣。

请登录后再评论