PHP匹配表达式教程展示了如何在PHP中使用匹配进行流控制。
$ php -v php -v PHP 8.1.2 (cli) (built: Aug 8 2022 07:28:23) (NTS) ...
我们使用PHP版本8.1.2。
匹配表达式是一种强大的控制流结构,我们可以在其中将值与多个备选方案进行比较。它类似于switchexpression。
匹配表达式返回一个值。它必须以分号结束。Amatcharm严格比较值(===)。火柴武器不会掉落到后来的案件中。default
关键字用于未包含在臂中的所有其他选项。
在if/else或switch语句中,每个单独的条件称为分支;在模式匹配中,使用术语arm代替。
PHP匹配整数文字
在第一个示例中,我们匹配整型文字。
<?php $menu = <<<MENU Select option 1 - start 2 - slow down 3 - accelerate 4 - pause 5 - terminate MENU; echo "$menu\n"; $opt = intval(trim(fgets(STDIN))); $res = match ($opt) { 1 => 'start', 2 => 'slow down', 3 => 'accelerate', 4 => 'pause', 5 => 'terminate', default => 'unknown' }; echo "your option: $res\n";
我们有一个选项菜单;每个选项都由一个整数表示。
$opt = intval(trim(fgets(STDIN)));
我们从命令行读取一个值。
$res = match ($opt) { 1 => 'start', 2 => 'slow down', 3 => 'accelerate', 4 => 'pause', 5 => 'terminate', default => 'unknown' };
匹配表达式将选定的选项与值列表进行匹配。每个臂用逗号分隔。对于所有其他选项,我们有default
关键字。
echo "your option: $res\n";
我们打印选择的选项。
PHP匹配字符串文字
在第二个示例中,我们匹配字符串文字。
<?php $langs = ['russian', 'slovak', 'german', 'swedish', 'hungarian', 'french', 'spanish']; echo("say hello\n"); foreach ($langs as $lang) { $res = match ($lang) { 'russian' => 'пÑивеÑ', 'hungarian' => 'szia', 'french' => 'salut', 'spanish' => 'hola', 'slovak' => 'ahoj', 'german' => 'hallo', 'swedish' => 'HallÃ¥' }; echo "$res\n"; }
我们有一个语言列表。我们浏览列表并为每种语言打招呼。
$ php main.php say hello пÑÐ¸Ð²ÐµÑ ahoj hallo HallÃ¥ szia salut hola
PHP匹配多个选项
单臂中的多个选项用逗号分隔。
<?php $grades = ['A', 'B', 'C', 'D', 'E', 'F', 'FX']; foreach ($grades as $grade) { $res = match ($grade) { 'A' , 'B' , 'C' , 'D' , 'E' , 'F' => 'passed', 'FX' => 'failed' }; echo "$res\n"; }
我们有一个成绩列表。对于A至F等级,我们通过了示例。对于FXgrade,我们没有通过考试。
$ php main.php passed passed passed passed passed passed failed
PHP匹配条件武器
在下一个示例中,我们在匹配臂中设置了条件。
<?php $r = rand(-5, 5); $res = match (true) { $r < 0 => "${r}: negative value", $r === 0 => "${r}: zero", $r > 0 => "${r}: positive value" }; echo "$res\n";
该示例选择了一个随机整数。通过匹配,我们可以确定值是负数、零还是正数。
$r < 0 => "${r}: negative value",
如果$r
小于零,则执行此分支。
在本教程中,我们介绍了PHPmatch
表达式。
列出所有PHP教程。