dedlfix: javascript und php - plötzlich fatal error

Beitrag lesen

Tach!

Wie mache ich das? wenn ich var_dump() vor die Zeile

$info[]=array('Lid'=>$haus["Lid"],'name'=>$haus["name"]);

setze gibt es doch noch gar kein $info - was soll mir ausgegeben werden?

Genau das ist die Frage, die dir var_dump($info) klären soll. Wenn es nicht da ist, dann gibt es als Ausgabe NULL und eine Notice, dass $info nicht existiert. Falls die Ausgabe von Notice-Meldungen nicht deaktiviert ist. Ansonsten mal das error_reporting auf E_ALL stellen (und display_errors auf on).

Wenn es nicht da ist, dann sollte es aber auch die Meldung nicht geben. Wenn es sie also gibt, dann ist es anscheinend doch da. Und wenn du dir anschaust, was da nun ausgegeben wird, mag es dir vielleicht anhand des Inhalts auffallen, wo es herkommen könnte.

"info" ist ein so nichtssagender Bezeichner für eine Variable und ein Allerweltswort noch dazu. Da besteht durchaus die Möglichkeit, dass man diesen Bezeichner an anderer Stelle ebenfalls schon verwendet hat. Eine genauere Bezeichnung von Variablen nach ihrem Inhalt - und da dürfen Namen schon des Verständnisses wegen ruhig auch mal etwas ausführlicher sein - sind von sich aus schon eindeutiger und weniger kollisionsgefährdet.

Anscheinend habe ich ein riesiges Brett vorm Kopp - hat mal jemand ne Zange da damit ich die Nägel rausziehen kann.

Es ist bei der Suche nach einem Fehler nicht hilfreich, von Annahmen auszugehen und dann bestimmte Dinge als gegeben vorauszusetzen. Stattdessen sollte man soviel prüfen, wie möglich. Auch ob Dinge nicht da sind, die man an der Stelle nicht erwartet. Und noch besser ist es, Dinge, die nicht da sind vor der ersten Verwendung definiert zu initialisieren.

Ein $array[] = ... ist nicht nur ein schreibender Vorgang, sondern auch ein lesender. Von etwas lesen zu wollen, das nicht da ist, wird in anderen Systemen deutlicher mit Fehlern bestraft. PHP jammert da nur ganz leise mit einer Notice-Meldung, deren Ausgabe üblicherweise unterdrückt ist. Das error_reporting für die Entwicklung auf E_ALL zu stellen, hilft, solche Zugriffe auf nicht initialisierte Dinge zu finden. Die fallen einem dann sonst auf die Füße, falls sie doch schon initialisiert sind - so wie vermutlich in deinem Fall.

dedlfix.