您现在的位置是:首页 > PHP框架交流PHP框架交流
PHP8.0新特性(5) Match 表达式
上善若水2024-03-05 10:24:34【PHP框架交流】 675人已围观
简介熟悉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)
相关文章
随机图文
-
笑话15则,总有一则逗笑你!
1、地上有一张50元,一张100元,你会捡哪张?答:当然100的那张呗.... 2、在街边报亭买烟,“其他地方都卖21块,为什么你这里要卖23?”我质问老板。 “小伙子,我看你长得帅,收多你两块钱很过分吗?” 这个怎么应付,我得想想!!! 3、高考查成绩的时候,我直接被大专录取了! 于是老爸一高兴,就直接送了辆玛莎拉蒂给我。 开学后我开着玛莎拉蒂上学,室友们第一次见名车。 很激动,纷 -
PHP8.0新特性(6) Nullsafe 字符串与数字的比较更符合逻辑 Nullsafe operator
1.Nullsafe 运算符 $country = null; if ($session !== null) { $user = $session->user; if ($user != -
2020.09.06武汉植物园,湖北艺术馆游玩
一天预约了两个景点一次玩个够,首先是武汉植物园,这里平时门票是需要35RMB呢,之前玩的景点都没排队,这个去的时候居然在排队,或许是我去的太早了吧,当时也就快1点的样子,是刷身份证进去的,整体整个植物 -
php技术提升心得与方法
现在的PHP市场虽然充斥了大量的的PHP开发人员,但这些人当中真正能称得上高手的却寥寥无几。很多公司虽然招聘了一些PHP开发人员,但是由于技术水平不高,导致公司的项目一直堆积。这不仅另公司无奈也让已经入职的PHP开发人员着急,他们也想要在PHP领域更近一步,但却苦于找不到提高自己的方法,下面我们的鸥仔收集了一些PHP大神的一些工作方式、习惯,让大家看看PHP大神们是如何工作,也希望这些方法能帮助到那些想要在PHP领域更近一步的人。