(PHP4格言)参照したけりゃfor使え

悪夢のような毎日が続いております。

さぁ今日もPHPネタで盛り上がっていきましょう!

何か思い通りの動きしないなーと思ってまさかと思ってPHPマニュアル見てみたんですが・・・、
foreachのイテレータって「コピー」なんですってね。勘弁してちょ。
しかもリファレンスで受け取る手段が無いんですって。勘弁してちょ。

 $obj       = new stdClass();
 $obj->hoge = 0;
 $array     = array(&$obj);
 
 $data = array();
 foreach($array as $val) { // $valには「コピー」されたオブジェクトが格納される
     $data []=& $val;
 }
 $data[0]->hoge = 10;
 
 print $obj->hoge; // 「0」と表示

ってことでコピーになっちゃうんでコピーされた$data[0]->hogeを書き換えても$obj->hogeには影響しないわけです。

これを回避しようと思ったらもうfor使うしかないわけですよ。

 $count = count($array);
 for( $i=0; $i < $count; $i++ ){
     $data []=& $array[$i];
 }

せっかくforeachという便利なものがあるのにこれじゃ使えねーーーーーーー!!!
なんでわざわざ先祖帰りするようなソースを書かねばならんのか誰か教えて下さい(;;)
もしかして僕が勘違いしてるだけ?使い方間違ってる?
あぁ、頭がイタイです。

ちなみにPHP5ではこの問題は解決してるみたいです。
ちゅーかどーせならPHP5でプログラムさせてくれ・・・。