在PHP8 alpha2发布引入了一个新的关键字:match。
刚在本地尝试使用match,结果报“unexpected . . .”错误,其实并无错误,需要将php版本更新。
match与switch有些许类似。
match可以用来做什么?
简单的match案例:
// match解析
$result = match(2){
1 => 'One',
2 => 'Two',
};
var_dump($result);
结果:
看如下代码:
// match解析
$age = 20;
$result = match(true){
$age >= 65 => 'target_1',
$age >= 25 => 'target_2',
$age >= 18 => 'target_3',
default => 'target_default',
};
var_dump($result);
结果:
匹配的结果是‘target_3’,从这里可以看出match参与匹配功能的实现,可以做内容筛选匹配。
再看一个示例:
// match解析
$text = 'Bienvenue chez nous';
$result = match(true){
str_contains($text,'Welcome') || str_contains($text,'Hello') => 'en',
str_contains($text, 'Bienvenue') || str_contains($text, 'Bonjour') => 'fr',
};
var_dump($result);
结果:
str_contains
str_contains:确认一个字符串是否包含一个给定的字符串。
str_contains ( string $haystack , string $needle ) : bool
// str_contains
if(str_contains('abc','')){
echo "Always return true";
}
结果: