Sonntag, 16. Dezember 2007

PHP weigert sich zu iterieren

Der Provider eines unserer Kunden hat sein PHP auf Version 5.2.3 upgedated und plötzlich erschien nur noch eine weisse Seite. Nach stundenlangem Suchen konnte die Fehlerquelle bei einem each ausfindig gemacht werden:
while (list($item, $data) = each($this->getValue($idTitle)))

Es fand schlicht keine Iteration mehr statt, der while blieb immer auf dem ersten Eintrag und erzeugte damit eine Endlosschlaufe. Sobald der Returnvalue des ersten Aufrufs in eine extra Variable gepackt wurde, funktionierte der each wieder:
$subs = $this->getValue($idTitle);
while (list($item, $data) = each($subs))

Ähnliche Probleme mit Returnvalues einer Instanzmethode sind schon bei früheren PHP Versionen immer wieder aufgetaucht. Es erstaunt doch etwas, dass man noch immer an solch tiefliegenden Mechanismen rumbastelt.

Keine Kommentare: