foreach
Kerstel
- php
0 Götz0 kerstel
0 Christian Seiler0 kerstel
Hi,
ich habe mir eine Rekursive Funktion gebaut:
function create_menu_tree ($user, $parentid = 0, $indent = 0) {
$final_list = array ();
$list = $this->get_menu_list ($user, $parentid);
// nun wird die liste abgearbeitet
foreach ($list as $listitem) {
$listitem["indent"] = $indent;
$final_list[] = $listitem;
$new_list = $this->create_menu_tree ($user, $listitem["id"], $indent + 1);
// wenn es Einträge für dieses Menü gibt
if (count ($new_list) > 0) {
$final_list = array_merge ($final_list, $new_list);
}
}
return $final_list;
}
Diese Funktioniert auf meinem Lokalen Server wunderbar (PHP 4.2). Bei meinem Provider (PHP 4.1) bekomme ich dann die Fehlermeldung:
Warning: Invalid argument supplied for foreach() in ...
Er mekert die Zeile an, in der foreach steht. Liegt das an den PHP-Versionen? Wie muss ich die sache dann ändern?
Gruß und Danke
Ralf
Hallo Ralf!
foreach ($list as $listitem)
Diese Funktioniert auf meinem Lokalen Server wunderbar (PHP 4.2). Bei meinem Provider (PHP 4.1) bekomme ich dann die Fehlermeldung:
Warning: Invalid argument supplied for foreach() in ...
Mach doch mal
foreach($list as $key => $listitem)
vielleicht geht ja das ... ansonsten http://www.php.net/manual/en/control-structures.foreach.php
MfG
Götz
Hi,
Mach doch mal
foreach($list as $key => $listitem)
vielleicht geht ja das ... ansonsten http://www.php.net/manual/en/control-structures.foreach.php
Ne funktioniert auch nicht, und das manual hilft da ja nicht wirklich weiter.
Gruß
Ralf
Hallo,
Warning: Invalid argument supplied for foreach() in ...
das bedeutet, dass der Array, den foreach bekommt, gar keiner ist (in dem Fall $list) - vielleicht liefert die Funktion $this->get_menu_list keinen Array zurück (z.B. wg. Fehlerfall o.ä.) Eine Abfrage vor's foreach à la if (!is_array ($list)) return array (); dürfte es dann tun. Wenn dann aber eine leere Liste zurückgeliefert wird, dann macht get_menu_list Probleme.
Grüße,
Christian
Hi
das bedeutet, dass der Array, den foreach bekommt, gar keiner ist (in dem Fall $list) - vielleicht liefert die Funktion $this->get_menu_list keinen Array zurück (z.B. wg. Fehlerfall o.ä.) Eine Abfrage vor's foreach à la if (!is_array ($list)) return array (); dürfte es dann tun. Wenn dann aber eine leere Liste zurückgeliefert wird, dann macht get_menu_list Probleme.
Komisch, das klappt (if (!is_array ($list)) return array ();) obwohl ich vorher mal $list ausgegeben habe, und es Array ausgegeben wurde.
Keine Ahnung was da war, aufjedenfall klappts mit deiner Idee.
Danke
Ralf