PHP8.0以降は switch の代わりに match を使う

PHP の switch は緩い比較を行うので、以下のコードを実行すると、0 ではなく false が出力されます。

<?php

function myFunc()
{
    $value = 0;
    
    switch ($value) {
      case false:
          return false;
      case 0:
          return 0;
    }
}

var_dump(myFunc());

match を使うことで厳密な比較ができます。

以下の出力は0になります。

<?php

function myFunc()
{
   $value = 0;
   
   $result = match ($value) {
       0 => 0,
       false => false
   };
   
   return $result;
}

var_dump(myFunc());

他にも match の場合は網羅性のチェックをしてくれるなどいろいろ安全なコードを助ける機能があります。

https://www.php.net/manual/ja/control-structures.match.php

PHP

Posted by たみぼうず