【PHP】foreach()で参照渡しする際の注意。

PHPのforeachは値を参照で渡すことができるが、ループ後の処理を適切に行わないと落とし穴にはまる。

具体的にはループを抜けた後に、ブロック内で用いていた変数をunsetしてやらなければならない。

foreach ($array as &$value) {
  // 処理
}
unset($value);

上記の例でもし$valueのunsetを忘れると、$valueは配列の最後の要素の参照を保持し続けるため、同じ変数名に値をセットした場合、元配列の最後の要素がその値に書き換わってしまう。

ということで、見落としがちだけど超重要。