您现在的位置是:首页 > PHP框架交流PHP框架交流
PHP8.0新特性(5) Match 表达式
上善若水2024-03-05 10:24:34【PHP框架交流】
762人已围观
简介熟悉PHP8.0的新特性,Match表达式match匹配比较严格,会验证类型和值,但大多数情况下,Match都可以替代,而且语法更加简洁!官方文档:https://www.php.net/manua
熟悉PHP8.0的新特性,Match 表达式match匹配比较严格,会验证类型和值,但大多数情况下,Match都可以替代,而且语法更加简洁!
官方文档:https://www.php.net/manual/zh/control-structures.match.php
match 表达式基于值的一致性进行分支计算。 match表达式和 switch 语句类似, 都有一个表达式主体,可以和多个可选项进行比较。 与 switch 不同点是,它会像三元表达式一样求值。 与 switch 另一个不同点,它的比较是严格比较( ===)而不是松散比较(==)。 Match 表达式从 PHP 8.0.0 起可用。
新的 match 类似于 switch,并具有以下功能:
Match 是一个表达式,它可以储存到变量中亦可以直接返回。
Match 分支仅支持单行,它不需要一个 break; 语句。
Match 使用严格比较。
Match无法完全取代switch语句,但是可以替代switch语句的某些功能。
1.强类型比较,字符串数字和数字不相同。
switch (8.0) {
case '8.0':
$result = "Oh no!";
break;
case 8.0:
$result = "This is what I expected";
break;
}
echo $result, PHP_EOL;
//> Oh no!
echo match (8.0) {
'8.0' => "Oh no!",
8.0 => "This is what I expected",
};
//> This is what I expected
2.match 表达式分支可以通过逗号分隔,包含多个表达式。 这是一个逻辑 OR,当多个分支表达式右侧相同时,就可以用这种缩写。类似于短路, True || $a=false
这个意思
$x = $a = $b = 1;
$result = match ($x) {
// 匹配分支:
1, 2, 3 => 5,
// 等同于以下三个分支:
($a = 4) => 4,
($b = 5) => 5,
};
print_r(compact('a', 'b', 'x'));
打印结果
Array
(
[a] => 1
[b] => 1
[x] => 1
)
当$x = 5;$a = $b = 1;
时候则打印结果
打印结果
Array
(
[a] => 1
[b] => 1
[x] => 1
)
3.match 表达式必须详尽列出所有情况。 如果主体表达式不能被任意分支条件处理, 会抛出 UnhandledMatchError。
当$x = $a = $b = 100;
时候则打印结果:
Fatal error: Uncaught UnhandledMatchError: Unhandled match value of type int in D:\phpstudy_pro\WWW\testphp8_0\PHP8_0\match_expression.php on line 30
UnhandledMatchError: Unhandled match value of type int in D:\phpstudy_pro\WWW\testphp8_0\PHP8_0\match_expression.php on line 30
可以加入default ,
与Switch的类似,这样就不会报错了。
$result = match ($x) {
// 匹配分支:
1, 2, 3 => 5,
// 等同于以下三个分支:
($a = 4) => 4,
($b = 5) => 5,
default => 998,
};
很赞哦! (0)
相关文章
随机图文
逗女孩开心的笑话,哄女陔开心的笑话
1.同学看上了一姑娘实在太好了,经过一番激烈的思想斗争,终于出手了。同学:阿姨,你好!妈妈:恩……同学:是这样的,我想认识您女儿。妈妈:这是我儿媳妇。2.今天我从我15岁的女儿电脑上搜出来一部A片,藏在'未来的职业'文件夹里,未来的职业!未来的职业!未来的职业!3.学校门口有两个水果摊,一女生在A摊买香蕉,挑的时候不停用手捏香蕉,估计是看熟不熟。这时B摊的小贩说:同学,到我这边买,我这边spriingboot之mybatis 多对多关联查询
上一篇演示i了一对多关联,在此基础上稍作修改就能完成多对多关联操作,入门知识点之使用注解完成多对多的配置. 表结构我们有三张表用户表用户组表用户与用户组中间表 用户表与中间表一对多关系用户组冠状病毒科普 什么是冠状病毒
冠状病毒在分类层级上是科,冠状病毒科拉丁文名Coronaviridae, 简称CoV,因为外形呈球状,具有花瓣状的刺突,因此根据其形状,国际病毒命名委员会在1975年正式命名为“冠状病毒科”。目前已知PHP8.1新特性 对字符串键控数组的数组解包支持
PHP8.1新特性 对字符串键控数组的数组解包支持,这样我们再对数组操作更加灵活方便,以前都是依赖数组函数去实现,现在写法更加便捷。官方文档https://www.php.net/manual/zh/