やっぱり型を意識しなきゃダメ
たとえば、
<?php function getValue() { $a['hoge'] = '1'; return $a; } $a = getValue(); var_dump($a['hoge']);
なコードがあって、途中で関数の仕様が
<?php function getValue() { $a = '1'; return $a; }
のように変わった場合、
<?php var_dump($a['hoge']);
は動作してしまいます。特に、getValue関数から返される値が1桁の場合、
$ php test.php string(1) "1" $
とか全然問題ないように見えてしまいます。理由はPHP: 文字列 - Manualの「文字列への文字単位のアクセスと修正」を参照ということで。
で、思ったのは、やはり「型を意識しなきゃダメ」だなぁ、ということ。
<?php function getValue() { $a = '1'; return (int)$a; } $a = getValue(); var_dump($a['hoge']);
というコードであれば、
$ php test.php NULL $
となり、誤りがハッキリと現れます。
こんなしょぼいバグに当たってびっくりしていた今日この頃。。。orz