match是PHP 8中新增的关键字,其作用与switch有点相似,用于变量的值转换与赋值。
下面可以举例说明,首先讲解switch操作:
程序运行会输出int(1),从而完成值转换操作。如果使用match关键字,如何实现同样的功能那?代码如下:
<?php
$a = "true";
$b = match($a) {
"true" => 1, //可多值匹配,匹配方式为===,无匹配值会抛出Fatal error
"false" => 0,
"null" => NULL,
};
var_dump($b); //输出: int(1)
?>
相比switch,match会直接返回值,然后直接赋值给变量$b。
和switch多条件相似,match的多个条件也可以写在一起,代码如下:
<?php
$a = "true";
$b = match($a) {
"true","online" => 1, //可多值匹配,匹配方式为===,无匹配值会抛出Fatal error
"false","off"=> 0,
"null","empty" => NULL,
};
?>
注意:从PHP 8开始,match已经是关键字了,也就是说它不能出现在namespace或者类名中,下面的代码将会报语法错误:
class Match{}