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.