PHPの配列は9ソだ!

PHPの仕様に関して文句は別にないんだが・・・、あのPHPの配列だけは、どうにかならないものか・・・。

Perlだと、配列と連想配列は、配列なら、$array[0] 、連想配列なら、$hash{’00’}と、表記と共に明確に区別されているのでわかりやすいし、まぁ、間違えることは、少ない。

が、PHPのコードを書いてると、ホントにイライラする。ま、言語仕様を斜め読みしかしていない、あやふやな知識で書いているオイラが全面的に悪いんだけど。。。

データベースのとあるカラムからフェッチした、数字の文字列を、つい、うっかり、配列に入れて、foreachとかでぶん回していたら、あるはずのデータが未定義になる、という現象の解読に数時間費やしてしまった・・・。

$ar = array();

$ar[1] = 'ほげほげ';
$ar[23] = 'ほむほむ';

//$recordには、以下の値が入っていた。
//$record['date_begin_day'] = '01';

echo $ar[$record['date_begin_day']];

さて、僕は、当然 「ほげほげ」と出力されると信じて疑わなかった。
PHPで仕事している人は、たぶん、こう思うでしょう。

「おまえはアホか!もう一回、リファレンスを読めよ」

と。

echo $ar[intval($record['date_begin_day'])];
//intval関数を通さないといけなかった・・・。

perlなら配列の添字は数字に暗黙的に変換されるので何ら問題無い。

$ar[1] = 'ほげほげ';
$ar[23] = 'ほむほむ';

$record{'date_begin_day'} = '01';

print $ar[$record{'date_begin_day'}];

しかし、別の問題を引き起こすが・・・ま、一長一短ですかな・・・。

気を付けよう。。。