>>503
最初のforeachループが論理的には
$b =& $a[0]; array_push($b,$b[0]);
$b =& $a[1]; array_push($b,$b[0]);
$b =& $a[2]; array_push($b,$b[0]);
:
:
$b =& $a[5]; array_push($b,$b[0]);
というふうに展開されるので、以降は$bは「$aの最後の要素」のエイリアスとして機能する。
これを避けるには、ループの直後でunset($b);をやる。