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