PHPのサンプルプログラムなどを読んでいるとたまに
「===」とイコールが3つついたif構文を見ることがあります。
今回は「==と===の違い」をテーマに書いてみたいと思います。
まずはサンプルプログラムを見てみましょう。
<?php $box1 = 1; $box2 = "1円"; if ($box1 == $box2) { //==を使った場合 echo "same"; }else{ echo "not same"; } echo "<br>";//改行 if ($box1 === $box2) { //===を使った場合 echo "same"; }else{ echo "not same"; }
実行結果を見ると分かる通り、「==」を使った場合、
1と1円の比較はsameとなり、同じだとみなされます。
一方、「===」を使った場合は僕らの感覚通り、not sameとなり、
1と1円は違うとみなされます。
つまり、「===」を用いたほうが正確に判定できるということになります。
なぜ、このようなことが起きるかというと、それはデータの型が違うからです。
データの型についてはこちらを御覧ください。
データの型が異なる場合、例えば上記のサンプルでは1はint(整数)型、
1円はString(文字列)型となります。
「==」ではデータの型が異なる場合に、正確な判定を行うことができないのです。
しかし、通常であればデータ型が異なる変数の比較は行いませんので
(そういうプログラムを書くことはほとんど無い)一般には「==」が
用いられます。