PHPと格闘
この週末は、PHP とずっと格闘していた。 ほとんど PHP でプログラムを書いたことが無いのも悪いんだけど、どうでもいいところで30分くらい行き詰ってしまう。
たとえば…
$arr = array(10, 20, 30, 40); foreach($arr as $value) { $value += 1; }
と書いても配列の中身が変わらないところ。 調べてみると、 foreach は値渡しなのが原因みたい。
$arr = array(10, 20, 30, 40); foreach($arr as $key => $value) { $arr[$key] = $value + 1; }
このように、キーを使って元の要素を直接修正しなきゃいけない。
一番参ったのは…
$var = 0; print ($var == 'string') ? 'true' : 'false'; // 結果は「true」
この結果が「false」じゃなくて「true」になる。え? $var は 'string' じゃないのに…。 「0」以外だと「false」と判定されるんだけど、何が悪いのかずっと分からなかった。
$var = 0; print ($var === 'string') ? 'true' : 'false'; // 結果は「false」
このように、「===」を使って比較してあげないとダメみたい。 でも、いまだに理由は理解してない。
PHP5 でだいぶ改善されているらしいけど、互換性の問題からまだまだ安心しては使えないんだよね。 でも、趣味じゃ PHP4 はできないなぁ…。