kagamihogeの日記

kagamihogeの日記です。

phpのifで死んだ

PHP3 というかなり古い環境に手を入れてたときの失敗談。最近の PHP ではどういう挙動になるかわかりませんが。

こんな感じのコードがあったわけです。

if($hogeFlag = "1") {
    print "true";
} else {
    print "false";
}

hogeFlag の値が何になろうが、絶対に true としか出力されない。あるぇー? としばらく悩んでしまった。パッと見で気付けた人はかなり注意力が高い。

これ何かっていうと、if の hogeFlag = "1" が代入文になってるんですよね。等号(=)がひとつしか無いのです。タイプミスか、どっかからコピペしたか……したときに比較演算子にし忘れたんでしょうかね。

この挙動って perl とか C とかからの名残なんでしょうねーきっと。