読者です 読者をやめる 読者になる 読者になる

PHPの比較演算


「4.6.1完全一致」からのメモ。


PHPには==と===という同一の値かどうかをチェックする比較演算子があります。それぞれの違いは値の型まで含めた比較を行うかどうかです。

  • ==は型変換を行い比較を行う
  • ===は型変換を行わず比較を行う

==では型変換を行うときに少し癖があるので、それにハマらないように注意が必要です。

比較方式
数値 数値 数値による比較
数値形式の文字列 数値形式の文字列 数値による比較
数値形式の文字列 数値 数値による比較
数値形式でない文字列 数値 数値による比較
数値形式の文字列 数値形式でない文字列 辞書順による比較
数値形式でない文字列 数値形式ではに文字列 辞書順による比較
  • 数値・数値なので、数値で比較
<?php
if(3 == 3){ echo "3 == 3\n";}
?>
3 == 3
  • 数値形式の文字列・数値形式の文字列なので、数値に変換して比較
<?php
if("3" == "3.0"){ echo "'3' == '3.0'\n"; }
?>
'3' == '3.0'
  • 数値・文字列なので、文字列を数値に変換して比較
<?php
if(3 == "3"){ echo "3 == '3'\n"; }
?>
3 == '3'
  • 数値・文字列なので、文字列を数値に変換して比較
<?php
#3hogeを数値に変換すると3になる
if(3 == "3hoge"){ echo "3 == '3hoge'\n"; }
?>
3 == '3hoge'
  • 数値形式の文字列・数値形式でない文字列なので、辞書順で比較
<?php
if("3" == "3hoge"){ echo "'3' == '3hoge'\n"; }
else{ echo "'3' != '3hoge'\n"; }
?>
'3' != '3hoge'
  • 数値形式でない文字列・数値形式でない文字列なので、辞書順で比較
<?php
if("hoge" == "hoge"){ echo "'hoge' == 'hoge'\n"; }
?>
'hoge' == 'hoge'




うーん、かなりややこしいですね。。。僕はこんな感じで覚えておくことにします。

  • 右辺左辺のどちらかが数値であれば、数値に変換される
  • 右辺左辺のどちらもが数値形式文字列であれば、数値に変換される
  • その他は辞書順