15. oktober 2007 - 14:30
Der er
8 kommentarer og 1 løsning
Cannot use a scalar value as an array
Efter at jeg opdaterede min servers php.ini fra display_errors Off til display_errors On samt error_reporting fra E_ALL til E_ERROR | E_PARSE | E_WARNING begyndte min webside på en fejl jeg ikke umiddelbart kan se en løsning på. Den returnerer fejl på følgende linier 104-109: 104: include("inc/moduler.php"); 105: 106: $modul_nyheder_arkiv = modul_nyheder_arkiv(); 107: $modul_nyheder_seneste = modul_nyheder_seneste5(); 108:$row[tekst] = str_replace("[-modul_nyheder_arkiv-]", $modul_nyheder_arkiv, $row[tekst]); 109: $row[tekst] = str_replace("[-modul_nyheder_seneste5-]", $modul_nyheder_seneste, $row[tekst]); Den returnerer følgende fejl: Warning: Cannot use a scalar value as an array in /srv/www/vhosts/itplaneten.dk/httpdocs/temp/index.php on line 108 Warning: Cannot use a scalar value as an array in /srv/www/vhosts/itplaneten.dk/httpdocs/temp/index.php on line 109 Filen inc/moduler.php indeholder følgende: <? include("db.php"); function modul_nyheder_seneste5() { $return = ""; $query = mysql_query("SELECT * FROM nyheder ORDER BY timestamp DESC LIMIT 5"); while($row = mysql_fetch_assoc($query)) { $return .= ' <b>'.$row[overskrift].'</b> ('.date("d/m-Y", $row[timestamp]).')<br><br style="font-size: 3px"> '.nl2br($row[tekst]).'<hr> '; } return $return; } function modul_nyheder_arkiv() { $return = ""; $query = mysql_query("SELECT * FROM nyheder ORDER BY timestamp DESC"); while($row = mysql_fetch_assoc($query)) { $return .= ' <b>'.$row[overskrift].'</b> ('.date("d/m-Y", $row[timestamp]).')<br><br style="font-size: 3px"> '.nl2br($row[tekst]).'<hr> '; } return $return; } ?> Anyone?
Annonceindlæg tema
Forsvar & beredskab
Cybersikkerhed, realtidsdata og robuste it-systemer er blevet fundamentet for moderne forsvar.
15. oktober 2007 - 14:40
#1
Er du sikker på, at der er linje 108 og 109? For jeg kan ikke få str_replace til at give den fejlbesked uanset hvad jeg giver den af input?
15. oktober 2007 - 14:40
#2
at det er*
15. oktober 2007 - 14:42
#3
Det er helt sikkert de her to linier der er linie 108 og 109: $row[tekst] = str_replace("[-modul_nyheder_arkiv-]", $modul_nyheder_arkiv, $row[tekst]); $row[tekst] = str_replace("[-modul_nyheder_seneste5-]", $modul_nyheder_seneste, $row[tekst]);
15. oktober 2007 - 14:48
#4
Hm, for det første er $row[tekst] ikke pænt - det hedder $row['tekst'] alle steder. Men derudover kan jeg ikke se, hvad der skulle være galt. Prøv inden den første linje at skrive: var_dump($row['tekst']); var_dump($modul_nyheder_arkiv); Så kan du se, hvad variablerne helt præcist indeholder, og hvilke typer, de har. Og du er sikker på, at ovenstående 2 linjer er i den rigtige fil - altså i index.php?
15. oktober 2007 - 15:11
#5
De er helt sikkert i index.php Kan det skyldes at $row['tekst'] = NULL?
15. oktober 2007 - 15:13
#6
Det kunne det vidst godt :) Men det burde str_replace da kunne finde ud af, gjorde den ikke?
15. oktober 2007 - 15:23
#7
Smider du et svar?
15. oktober 2007 - 15:25
#8
Det giver ikke mening at kalde str_replace hvor nogle af argumenterne er NULL. Hvordan skulle den dog kunne håndtere det? returnere null, returnere ""? Den kunne passende give en bedre fejlbesked, men håndtere det er svært :)
15. oktober 2007 - 15:25
#9
Helt sikkert :)
Vi tilbyder markedets bedste kurser inden for webudvikling