47歳でやむなくセミリタイア

病気のためセミリタイアをすることに。現在は週20時間程度のバイトをしています。その他、雑多なことを記録として書いています。

phpの罠にハマったのでメモしておく

今日は建国記念日でお休み。ただ、何もする気がしなくて一日ぼんやりしていました。

さて、phpを仕事で使うようになり、大分使い慣れてきたのですが、ありがちな罠にハマったらしいので、今後気をつけるためメモしておきます。

文字列比較は == を使ってはならない

結構phpでは常識らしく、検索するとたくさん出てきます。例えば以下とか。
uxmilk.jp

phpは文字列比較で(数値が含まれていると)数値に直して比較する

例えば、以下のような場合、$val1と$val2は両方とも数値に変換されて1となり、同じと判断されてしまいます。

$val1 = '00001';
$val2 = '001';
if ($val == $val2) {
   echo "同じ";
}

ややこしいことに、数値がなければ文字列として比較するんですよね。

対策

上のWebページにもありますが、strcmp()を使うか、型変換が起きない===を使って比較する必要があります。

知っていれば何てことはないのですが、見事に引っかかってしまいました。