天天看點

PHP8中match新語句的操作方法

PHP8 新出的一個文法很好用,就是 match 語句。match 語句跟原來的 switch 類似,不過比 switch 更加的嚴格和友善

原來的 switch 語句代碼如下:

1 function getStr( $strType ){
 2 
 3     switch( $strType ){
 4 
 5         case 1:
 6 
 7             $str = 'one';
 8 
 9             break;
10 
11         case 2:
12 
13             $str = 'two';
14 
15             break;
16 
17         default :
18 
19             $str = 'error';
20 
21     }
22 
23     return $str;
24 
25 }
26 
27 //當輸入數值 1 和 字元 '1' 不會進行類型判斷
28 
29 echo getStr(1); //one
30 
31 echo getStr('1'); //one
32 
33 echo getStr(2); //two
34 
35 echo getStr('2'); //two      

換成 match 語句後:

function getStr( $strType ){
    return match( $strType ){
        1 => 'number one',
        '1' => 'string one',
        default => 'error',
    };
}
//可以看出輸入數值 1 跟字元 `1` 傳回的值是不同的
echo getStr(1); //number one
echo getStr('1'); //string one
      

 

1 function getStr( $strType ){
 2     return match( $strType ){
 3         1 => (function(){
 4             return 'number one';
 5         })(),
 6         '1' => (function(){
 7             return 'string one';
 8         })(),
 9         default => 'error',
10     };
11 }
12 //雖然這種代碼風格也能行的通,但是總感覺哪裡怪怪的
13 
14 echo getStr(1); //number one
15 echo getStr('1'); //string one      

 PHP8 新出的文法 match 相比原來的 switch 文法更加的友善和嚴格

路是自己走出來的,而不是選出來的。