これって文字列なのか?2007年12月17日 02時16分44秒

PHPってワケワカラン深いなぁ

前回のエントリにいただいたトラックバックの記事で、またもPHPの非常識興味深い挙動に出くわした。

こちらの記事では、Javaグラマに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()使ったことないけど。