前回のエントリにいただいたトラックバックの記事で、またもPHPの非常識興味深い挙動に出くわした。
for ($i=0; i < count($value); $i++) {という記述で無限ループしたとの記述。???
上記コードでループ条件の比較に「i」(!=$i、要するに変数じゃない)を用いたため、これが暗黙で数値「0」と見なされ無限ループになったとのことだが、これパースエラーにならんの??
ためしにこんなコードを試してみる。
C:\Documents and Settings\dara-j>php -r "echo ijk;" ijk C:\Documents and Settings\dara-j>ちっともパースエラーになぞならず、しっかりと「ijk」という文字列として扱われている。わけわからん。
一応マニュアルの文字列の項をざっと見てみたけど、引用符か二重引用符でくくるかヒアドキュメントにするかってくらいしか書いてなくて、どこをどう押したらこんな記述が許容されるのかさっぱりわからん。 これバグ誘発しやすいと思うけどなぁ。
前回のエントリで触れた、PHPの文字列→数値の自動変換って、JavaScriptのparseInt()とほぼ同じ働きみたいだね。あんまparseInt()使ったことないけど。
セコメントをする