レファレンスではまる
foreach を使ったループで以下のように書いたら、
foreach ( $list as $item ) { $item['hoge'] = 'fuga'; }
ループを抜けたら $item['hoge'] が空っぽになってしまってはまりました。
http://groundwalker.com/blog/2008/02/php_foreach.html
配列の各要素を書き換えたいとき、PHP5なら、&をつけることで、要素を一時変数にコピーせずに参照することができる。
ということらしく、以下のように書くのが正しいようです。
foreach ( $list as &$item ) {
$item['hoge'] = 'fuga';
}