先日、PHPだとif('01' == '1')がtrueになってしまうという記事を書きました。
PHPでは'01'と'1'は同じなの!?
が、
調べてみると演算子(==)に関して驚くべきことが分かりました。
結論から言うと、
演算子(==)
は使うなということのようです。
※厳密には全く使わないという訳にはいかないような気もしますが。。。
というのは、
if("1" == 1) ~;
は当然「true」です。
if("x1" == 1) ~;
は当然[]false」になります。
あと、
if("1x" == "1") ~;
も当然「false」です。
が、
驚くのはここからで、
if("1x" == 1) ~;
↑これ、「true」になります。
if("1あ" == 1) ~;
も「true」になります。
対処方法としては、
if("1x" === 1) ~;
というように、
「===」
を使って型まで厳密にチェックしたり、
if(strcmp("1x", 1) == 0) ~;
とすればいいとのことです!!
この記事へのコメントはありません。