はじめに
PHPでは、値の比較をする場合は下記の比較演算子を使うことが多いと思います。
この書き方では正しい処理ができない標準関数があります。
sample.php
$a == true;
test() != false;
!test()
注意点
PHPの関数には、エラーが発生した場合にfalse
を返すケース
処理に該当しない場合に0
を返すパターンがあります。
この場合の比較には、===
演算子を活用しましょう。
preg_match
(PHP 4, PHP 5, PHP 7, PHP 8)preg_match() は、pattern が指定した subject にマッチした場合に1を返します。
マッチしなかった場合は 0 を返します。 失敗した場合にfalseを返します警告
この関数は論理値 false を返す可能性がありますが、false として評価される値を返す可能性もあります。 詳細については 論理値の セクションを参照してください。この関数の返り値を調べるには ===演算子 を 使用してください。
上記の例だと、!=
で比べるとマッチしなかったのか、失敗したのか判断ができません。
最後に
PHPDocumentationの確認は大事ですね。
まさか、PHPの標準関数で型比較まで求められるとは思わなかった。
あと、静的解析のPHPStanなど入れると検知することもできるのでおすすめです。