2015年10月5日

PHP if構文 応用1 〜 == と === の違い 〜

«
»

Pocket

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円は違うとみなされます
 
つまり、「===」を用いたほうが正確に判定できるということになります。
 
なぜ、このようなことが起きるかというと、それはデータの型が違うからです。
データの型についてはこちらを御覧ください。

PHPのデータ型(int,string,array)

 
データの型が異なる場合、例えば上記のサンプルでは1はint(整数)型、
1円はString(文字列)型となります。
 
「==」ではデータの型が異なる場合に、正確な判定を行うことができないのです
 
しかし、通常であればデータ型が異なる変数の比較は行いませんので
(そういうプログラムを書くことはほとんど無い)一般には「==」が
用いられます。

まとめ

・「==」と「===」で実行結果が異なる場合がある
・データ型が異なる場合、「===」の方が正確に判定できる

【関連する記事】