【PHP】比較演算子「==」と「===」の違い

PHP PHP

「==」と「===」はPHPの比較演算子で、条件式の真偽を評価するために使用されます。
この記事では、両者の違いについて詳しく解説します。

PHPの比較演算子について

PHPでは、変数や値の比較に使用されるさまざまな比較演算子があります。
代表的なものに等価演算子「==」と厳密等価演算子「===」があります。
これらは値の比較を行う際に使用され、条件式の結果(true:同一 / false:異なる)を判定します。

「==」と「===」の違いについて

「==」は等価演算子であり、値の比較を行います。
例えば、$x == $y の場合、$x と $y のが等しい場合に条件式が真(true)となります。

var_dump('abc' == 'abc'); // boolean(true)
var_dump('0' == 0);       // boolean(true)
var_dump('abc' == 'def'); // boolean(false)

一方、「===」は厳密等価演算子であり、値の比較だけでなく、型も比較します。
つまり、$x === $y の場合、$x と $y のが完全に一致する場合に条件式が真となります。

var_dump('abc' === 'abc'); // boolean(true)
var_dump('0' === 0);       // boolean(false)
var_dump('abc' === 'def'); // boolean(false)

それぞれの利点と注意点

==

「==」は値の比較の際に型の変換を行います。そのため、「===」に比べて若干遅いです。バッチなど長時間動作する場合には気をつけましょう。
利点としては、リクエストの値が数値の場合など、数値型なのか文字型なのか不明な場合でも比較ができるため、大変便利です。
注意点としては、意図しない場合にtrueが返る場合があります。例として以下のようなコードとなります。

var_dump('0' == false);  // boolean(true)
var_dump([] == false);   // boolean(true)
var_dump(null == false); // boolean(true)

この注意点は頻繁にバグとして検知されるので、常に気をつけるようにしましょう。

詳しい比較は公式にある「PHP 型の比較表」に記載がありますので、参照してみましょう。

===

型の変換などは行わず厳密な比較を行うため、可能ならばこちらを利用しましょう。
無理に厳密等価演算子「===」を利用しようとすると、型変換をしたり書式チェックをしたり、失敗した場合のコードを記述する必要があったりと、コードが長くなる場合があります。
比較をするために長文のコードを記載するよりは等価演算子「==」を選択する方が良い場合もあります。

まとめ

この記事では、PHPの「==」と「===」の違いについて詳しく解説しました。
等価演算子「==」は値の比較を行い、厳密等価演算子「===」は値と型の比較を行います。
どちらを使用するかは、比較する値や型の一致をどの程度求めるかや、パフォーマンスによって異なります。
適切に選択することで、予期しないバグやエラーを回避することができます。
初級者から中級者までのエンジニアにとって、この違いを理解することは非常に重要です。

Follow me!

コメント

PAGE TOP
タイトルとURLをコピーしました