anpera.net https://anpera.dyndns.org/phpbb3/ |
|
Warning: Invalid argument supplied for foreach()... https://anpera.dyndns.org/phpbb3/viewtopic.php?f=34&t=4733 |
Seite 1 von 1 |
Autor: | Welv [ Mi 03 Dez, 2008 17:28 ] |
Betreff des Beitrags: | Warning: Invalid argument supplied for foreach()... |
... mir ist klar was die Fehlermeldung bedeutet. foreach erwartet ein array, bekommt aber keines. Seltsam finde ich nur dass es einmal klappt. ich bastele an einem kampfsystem mit mehreren gengern und teste gerade die übersicht. gespeichert werden die gegner als mehrdimensionales array in $session['user']['badguy']. in der datenbank sieht das zb so aus... $this->bbcode_second_pass_code('', ' a:3:{i:0;a:8:{s:4:"name";s:12:"kleiner Hund";s:6:"skills";s:0:"";s:5:"beute";s:0:"";s:3:"atk";d:7;s:3:"def";d:8;s:2:"hp";d:7;s:2:"mp";i:0;s:3:"exp";d:9;}i:1;a:8:{s:4:"name";s:12:"kleiner Hund";s:6:"skills";s:0:"";s:5:"beute";s:0:"";s:3:"atk";d:7;s:3:"def";d:8;s:2:"hp";d:7;s:2:"mp";i:0;s:3:"exp";d:12;}i:2;a:8:{s:4:"name";s:4:"Hund";s:6:"skills";s:0:"";s:5:"beute";s:0:"";s:3:"atk";d:7;s:3:"def";d:8;s:2:"hp";d:20;s:2:"mp";i:0;s:3:"exp";d:20;}} ') mit dieser funktion werden sie mir dann angezeigt PHP: function monster_overview(){ global $session; $return=true; $count=0; foreach($session['user']['badguy'] AS $monster){ if($monster['hp']>0){ output("`n`n ".$count."- ".$monster['name']."`n ".$monster['hp']." "); rawoutput("<br /><a href='game.php?op=atk&id=".$count."'>Angreifen</a>"); addnav("","game.php?op=atk&id=".$count); $count++; } } if($count<1) $return=false; return $return; } das ganze hab ich mal zum test so laufen: PHP: switch($_GET['op']){ default: if(!load_monster($_GET['m_id'],$_GET['m_group'])){ output("Was auch immer du hier suchst, etwas zu bekämpfen findest du hier sicher nicht."); addnav("Zurück","game.php?forest=back"); }else{ monster_overview(); addnav("(Zurück)","game.php?forest=back"); } break; case"atk": monster_overview(); addnav("(Zurück)","game.php?forest=back"); break; } beim ersten mal funktioniert monster_overview(); genau so wie ich es will. wenn ich jedoch auf angreifen gehe, also op=atk, dann funktioniert monster_overview(); nicht mehr und gibt besagten fehler aus. kann irgendwie nur an der bearbeitung von $session liegen oder ich hab irgendwo nen denkfehler. wäre toll wenn mir wer helfen kann ![]() |
Autor: | Jenutan [ Mi 03 Dez, 2008 18:02 ] |
Betreff des Beitrags: | Re: Warning: Invalid argument supplied for foreach()... |
Interessant... Ist es möglich, dass $session['user']['badguy'] bei dir auch mal kein Feld ist? "print_r" oder "var_dump" gefolgt von einem "exit" vor dem "foreach" sollten dies ausschließen können ... Gruß |
Autor: | Auric [ Mi 03 Dez, 2008 18:09 ] |
Betreff des Beitrags: | Re: Warning: Invalid argument supplied for foreach()... |
Badguy könnte tatsächlich leer sein - ansonsten kannst du es dir wie gesagt zu debugzwecken ausgeben lassen, oder besser gleich in der Funktion per is_array behandeln lassen. grüße, Auric |
Autor: | Welv [ Mi 03 Dez, 2008 18:31 ] |
Betreff des Beitrags: | Re: Warning: Invalid argument supplied for foreach()... |
hmm. ich glaub ich weiß woran es liegt, weiß aber noch keine lösung. direkt vor monster_overview(); speicher ich mit load_monster(); die gegner als array in $session['user']['badguy'] bis zum nächsten aufruf wird das array wohl in ein DB taugliches format konvertiert und dann wieder so ausgegeben. hab versucht $session['user']['badguy'] mit createarray() wieder zu nem array zu machen aber irgendwie klapt das nicht. edit.... unserialize(); ist mein freund. dachte ich zwar schon erfolglos verwendet zu haben aber nun gehts. danke für den is_array tipp ![]() |
Seite 1 von 1 | Alle Zeiten sind UTC + 1 Stunde |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |