Chris: foreach

Beitrag lesen

Hallo,

$Content = @file($fn);
foreach ($Content as $currentRow) {
//bla
}

dann zeigt er mir folgendes an:
Warning: Invalid argument supplied for foreach() in [...]
^^Die Zeile mit foreach()

Wo liegt mein Fehler?

Dein Hauptfehler dürfte sein, dass Du nicht alle Fehlermeldungen eingeschaltet hast, wenigstens zum Entwickeln!

Stelle an den Anfang Deines Scriptes erstmal ein

error_reporting(E_ALL);

und vergewissere Dich durch Test, ob nun auch Notices angezeigt werden.

Der zweite Fehler ist sicher, dass Du auch noch die Fehleroption @ einsetzt, um automatische Fehlermeldungen zu unterdrücken, ohne nachher zu prüfen, ob ein fehler aufgetreten ist. Dazu dient die Variable $php_errormsg mit der Einstellung

ini_set('track_errors','1')

am Anfang des Scriptes.

Der dritte Fehler ist, dass Du Foreach-Schleifen benutzt, ohne vorher eine Abfrage auf Gültigkeit des Argumentes durchzuführen. Insbesondere bei automatischer Datenzuführung gehört for jede Foreach-Schleife ein

if(is_array($argument))
  {
    foreach($argument as $key => $val)
    {
      # ...
    }
  }
  else
  {
    # Reaktion auf falsches Argument
  }

wobei die Reaktion je nach Anwendungsfall entfallen kann oder aber auch erhebliche Maßnahmen erfordern kann. Das kannst nur Du als ProgrammiererIn wissen.

LG
Chris