at posts/single.html

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 はできないなぁ…。

関連する日記