LoginSignup
5
0

More than 3 years have passed since last update.

厳密等価演算子(===)と等価演算子(==)の違いと比較表

Last updated at Posted at 2019-05-31

PHPにおける、厳密等価演算子(===)と等価演算子(==)の違いについてです。

厳密等価演算子(===)と等価演算子(==)の違い

=== は型まで同一か見てくれます。
== は気をつかって型を変換したうえで比較してくれます。優しいですね。優男(ヤサオ)っていま褒め言葉らしいですね。

どちらを使用すべきか?

一見、自動で変換してくれる== のほうが便利そうです。
しかし基本的には===を使用したほうがよいでしょう。

==を使用した場合、↓の比較は全てtrueとなります。
直感的ではありませんね。
直感的でないということはバグを埋め込みやすくなってしまいます。

<?php
echo 0 == null ? 'true' : 'false';       // true
echo 1 == true ? 'true' : 'false';       // true
echo array() == null ? 'true' : 'false'; // true
echo "" == false ? 'true' : 'false';     // true

==を「絶対使うな」とまでは思いませんが、「よくわからないなら===使っとくのが無難だよ」ということですね。

比較表

縦横交差している部分が評価結果です。
※ 〇:true 、-:falseです。

                     TRUE                         FALSE                         1                       0                       -1                       "1"                       "0"                       "-1"                       NULL                       array()                           "php"                                ""                                           
== === == === == === == === == === == === == === == === == === == === == === == ===
TRUE - - - - - - - - - - - - - - - - - TRUE
FALSE - - - - - - - - - - - - - - - - - FALSE
1 - - - - - - - - - - - - - - - - - - - - 1
0 - - - - - - - - - - - - - - - - - 0
-1 - - - - - - - - - - - - - - - - - - - - -1
"1" - - - - - - - - - - - - - - - - - - - - "1"
"0" - - - - - - - - - - - - - - - - - - - - "0"
"-1" - - - - - - - - - - - - - - - - - - - - "-1"
NULL - - - - - - - - - - - - - - - - - - NULL
array() - - - - - - - - - - - - - - - - - - - - array()
"php" - - - - - - - - - - - - - - - - - - - - "php"
"" - - - - - - - - - - - - - - - - - - - ""

表自体はPHPマニュアルにあるものを引っ張て来ています。
公式の表が見づらかったので加工しています。
PHP 型の比較表

終わりに

この記事は今触っているコードが == だらけで糞ワロタというモチベーションで書かれました。

5
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
0