25. november 2008 - 10:42
Der er
8 kommentarer og 1 løsning
Invalid argument supplied for foreach()
Jeg har følgende kode: <?php class priv { public function __construct($uid, $program){ global $mysqli; $this->arrProg = array(); $read = $mysqli->query("SELECT * FROM priv WHERE uid = '".$uid."'"); while($Arr = $read->fetch_array()){ $this->arrProg[$Arr['program']] = '0'; array_push($this->arrProg, split(",", $Arr['attribut'])); } print_r($this->arrProg); echo "<br />"; } public function echo_me(){ echo "<br />"; foreach($this->arrProg AS $key => $program){ echo "<br />".$key."<br />"; foreach($program AS $afdeling){ echo $afdeling."<br />"; } } echo "<br />"; } } ?> Problemet ligger i public function echo_me(){}, hvor jeg hver gang den første foreach() kører får følgende: Warning: Invalid argument supplied for foreach() in C:\WWW\info\ldap\inc\class.priv.php on line 27 Men derudover får jeg da data jeg ønsker, så fejlen har ikke indvirken på det jeg gerne vil have den til, men derfor skal den jo ikke fejle. Er der nogen der kan hjælpe med at afhjælpe denne fejl?
Annonceindlæg fra Infor
25. november 2008 - 10:59
#1
<ole> Nu er det ikke en fejl, men en advarsel, men derfor bør den jo ikke være der alligevel =) Kan det mon hænge sammen med, at du ikke erklærer variablen udenfor klassens funktioner? /mvh </bole>
25. november 2008 - 11:11
#2
Hvilken variabel? Og hvordan vil du erklære den? Beklager hvis det er dumme spørgsmål, men er ikke just på hjemmebane i classes (endnu).
25. november 2008 - 11:24
#3
Måske noget i stil med: class priv { private $arrProg = array(); public function __construct($uid, $program){ global $mysqli; $read = $mysqli->query("SELECT * FROM priv WHERE uid = '".$uid."'"); while($Arr = $read->fetch_array()){ $this->arrProg[$Arr['program']] = '0'; array_push($this->arrProg, split(",", $Arr['attribut'])); } print_r($this->arrProg); echo "<br />"; } public function echo_me(){ echo "<br />"; foreach($this->arrProg AS $key => $program){ echo "<br />".$key."<br />"; foreach($program AS $afdeling){ echo $afdeling."<br />"; } } echo "<br />"; } }
25. november 2008 - 11:27
#4
Mjah, det gjorde dog ingen forskel.
25. november 2008 - 11:37
#5
Mit array ser således ud: Array ( [kontooversigt] => 0 [0] => Array ( [0] => 2105 [1] => 2210 [2] => 2115 ) [reklamationer] => 0 [1] => Array ( [0] => ) )
25. november 2008 - 12:10
#6
Jamen så indeholder alle elementer i dit array jo ikke et array og derfor kan du ikke bruge din anden foreach. Så bliver du jo nød til at sortere lidt i dit array. Noget ala: foreach($this->arrProg AS $key => $program){ echo "<br />".$key."<br />"; if(is_array($program)){ foreach($program AS $afdeling){ echo $afdeling."<br />"; } } else echo $program."<br />"; }
25. november 2008 - 12:21
#7
Skide godt... God ting. dkfire, smider du ikke et svar?
25. november 2008 - 13:13
#8
svar :-)
25. november 2008 - 13:29
#9
Mange tak for hjælpen.
Vi tilbyder markedets bedste kurser inden for webudvikling