PHP8中的匹配表达式类似于PHP7的switch语句。
1. match匹配单值
相对于switch隐藏了break
$name = match (2) {
1 => 'kaka',
2 => 'niuiniu',
};
echo $name; // niuiniu
2. 匹配多个条件
$method = $_SERVER['REQUEST_METHOD'];
match ($method) {
'post' => $this->handlePost(),
'get', 'put' => $this->handleGet(),
};
3. 默认值
存在跟switch相同的属性default
$name = match (3) {
1 => 'kaka',
2 => 'niuniu',
default => 'heihei',
};
echo $name; // heihei
4. 如果不设置默认值会报错
如果不设置default则会报错
$name = match(3) {
1 => 'kaka',
2 => 'niuniu',
};
echo $name; // Uncaught UnhandledMatchError: Unhandled match value of type int
5. 强制类型匹配
默认强制类型匹配,如下代码匹配值为int,但是搜索值为字符串3,所以会直接走default
$name = match (3) {
1 => 'kaka',
2 => 'niuniu',
"3" => 'niuniu',
default => 'zero',
};
echo $name; // zero
暂无评论,抢个沙发...