
PHP8 alpha2发布了,最近引入了一个新的关键字:match, 这个关键字的作用跟switch有点类似。
这个我觉得还是有点意思,match这个词也挺好看,那么它是干啥的呢?
在以前我们可能会经常使用switch做值转换类的工作,类似:
function convert($input) { switch ($input) { case "true": $result = 1; break; case "false": $result = 0; break; case "null": $result = NULL; break; } return $result; }
那么如果使用match关键字呢,可以变成类似:
function converti($input) { return match($input) { "true" => 1, "false" => 0, "null" => NULL, }; }
相比switch, match会直接返回值,不再需要上面switch例子中的$result中间变量。
并且,类似switch的多个case一个block一样,match的多个条件也可以写在一起,比如:
return match($input) { "true", "on" => 1, "false", "off" => 0, "null", "empty", "NaN" => NULL, };
需要注意的和switch不太一样的是,以前我们用switch可能会经常遇到这种诡异的问题:
$input = "2 person"; switch ($input) { case 2: echo "bad"; break; }
你会发现,bad竟然被输出了,这是因为switch使用了宽松比较(==)。match就不会有这个问题了, 它使用的是严格比较(===),就是值和类型都要完全相等。
还有就是,当input并不能被match中的所有条件满足的时候,match会抛出一个UnhandledMatchError exception:
function convert($input) { return match($input) { "true" => 1, }; } convert("false");
会得到:
Fatal error: Uncaught UnhandledMatchError: Unhandled match value of type string
这样就不用担心万一match条件没写全导致了不可预知的错误。
推荐教程:《PHP8》
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!
Comment ouvrir le fichier php
Comment supprimer les premiers éléments d'un tableau en php
Que faire si la désérialisation php échoue
Comment connecter PHP à la base de données mssql
Comment connecter PHP à la base de données mssql
Comment télécharger du HTML
Comment résoudre les caractères tronqués en PHP
Comment ouvrir des fichiers php sur un téléphone mobile