$temp = array();
while (list($key, $val) = each($array)) {
$temp[$key] = $val;
}
foreach ($array as $key => $val) {
$temp[$key] = $val;
}
は等価、みたいな記述があったのでいつもはforeachを使ってたのだけれど試しにeachを使ったら$tempが空に。
あれって思って使い方を再度調べたらresetが抜けてたみたい。
配列の内部ポインタがリセットされてないのでそもそもwhile内でfalseを返してたのかな。