PHP - bug při iteraci pomocí foreach

Narazil jsem dnes na velmi povedený bug v PHP. Ukažme si ho na příkladu:

$arr = array(1, 2, 3, 4, 5);

foreach ($arr as &$x) {}

foreach ($arr as $x) {
	echo $x;
}

Očekávaným výsledkem je "12345". Místo toho se ale vypíše "12344" :)

Chyba nastane v případě, že iterujeme pole nejprve přes &$proměnná, a pak znovu přes stejnou proměnnou ale bez operátoru reference. Pokud operátor reference uvedeme i v druhé iteraci, chyba se neobjeví.

Bug byl nahlášen už v roce 2004, ale stále ještě není opraven.