PHP8新特性之match表达式

栏目: IT技术 · 发布时间: 5年前

内容简介:PHP8 alpha2发布了,最近引入了一个新的关键字:match, 这个关键字的作用跟switch有点类似。这个我觉得还是有点意思,match这个词也挺好看,那么它是干啥的呢?在以前我们可能会经常使用switch做值转换类的工作,类似:

PHP8 alpha2发布了,最近引入了一个新的关键字:match, 这个关键字的作用跟switch有点类似。

这个我觉得还是有点意思,match这个词也挺好看,那么它是干啥的呢?

在以前我们可能会经常使用switch做值转换类的工作,类似:

function convert($input) {
    switch ($input) {
        case "true":
            $result = 1;
        break;
        case "false":
            $result = 0;
        break;
        case "null":
            $result = NULL;
        break;
    }
    return $result;
}

那么如果使用match关键字呢,可以变成类似:

function converti($input) {
    return match($input) {
        "true" => 1,
        “false” => 0,
        “null” => NULL,
    };
}

相比switch, match会直接返回值,不再需要上面switch例子中的$result中间变量。

需要注意的和switch不太一样的是,以前我们用switch可能会经常遇到这种诡异的问题:

$input = "2 person";
switch ($input) {
    case 2:
        echo "bad";
    break;
}

你会发现,bad竟然被输出了,这是因为switch使用了宽松比较(==)。match就不会有这个问题了, 它使用的是严格比较(===),就是值和类型都要完全相等。

还有就是,当input并不能被match中的所有条件满足的时候,match会抛出一个UnhandledMatchError exception:

function convert($input) {
    return match($input) {
        "true" => 1,
    };
}
convert("false");

会得到:

Fatal error: Uncaught UnhandledMatchError: Unhandled match value of type string in

这样就不用担心万一match条件没写全导致了不可预知的错误。

详细的,可以参考RFC: Match Expression

以上。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

谷歌的断舍离:互联网企业的破坏式创新

谷歌的断舍离:互联网企业的破坏式创新

[日]辻野晃一郎 / 樊颖 / 机械工业出版社 / 2018-1 / 45.00

本书主要分为三部分: 第一部分主要讨论了世界当下如火如荼的互联网企业进军传统产业大潮,并探讨了传统企业在互联网时代的救赎之路。 第二部分主要探讨了成功体验的反面:速度与迭代,并讨论了传统企业之所以无法实现迭代与快速发展的关键原因。介绍互联网公司如何通过组织精简流程来实现高速竞争时代的机动性。 第三部分讨论了互联网时代究竟需要什么样的人才,传统企业的员工应当怎样投身互联网企业才能避......一起来看看 《谷歌的断舍离:互联网企业的破坏式创新》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具