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