1
Help us understand the problem. What are the problem?

posted at

updated at

PHPには0とfalseを返す標準関数がある

はじめに

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など入れると検知することもできるのでおすすめです。

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
1
Help us understand the problem. What are the problem?