"match"函数在 Laravel 代码上不起作用


class ClickWithContent
{
public $LeftUser;

public function y()
{
$value = match(1) {
1 => 'Hii..', // <-------- syntax error, unexpected '=>' (T_DOUBLE_ARROW)
2 => 'Hello..',
default => 'Match not found !',
};
}
}

在上面的代码行中,我尝试使用match函数而不是switch语句。但是我在代码中提到的在线上得到以下错误。

语法错误,出乎意料的=祝辞(T_DOUBLE_ARROW)

PHP Match

据php.netmatch()表达文档状态:

匹配表达式从PHP 8.0.0开始可用。

显然你正在使用php版本<8.0.0. 确保你使用的是PHP 8+,你可以在你的代码中使用phpinfo()或在你的终端上使用php -v来检查你的PHP版本。

match()的替代方案是(或者我应该说match()是替代方案)我们称之为switch(),您可以通过使用switch()简单地复制您在这里尝试的内容(不要忘记开关不适用于整数,因为0将简单地评估为false,反之亦然),因此您可以尝试这样做:

$target = 1;
$value = null;
switch((string) ($target)) // typecast to string
{
case "1":
$value = 'Hi..';
break;
case "2":
$value = 'Hello..'
break;
default:
$value = 'Match not found !'
}

我希望这解释了你的问题。