PHP Problem: Cannot use [] for reading

dominikus

Angesehenes Mitglied
Hallo miteinander,

wäre schön, wenn mir jemand helfen könnte. In mein Forum möchte ich eine Sitemap einbinden. Hierzu hab ich mir einen Mod runtergeladen, allerdings erscheint folgender Fehler:

Fatal error: Cannot use [] for reading in /homepages/htdocs/forum/sitemap.php on line 70

Line 70 sieht folgendermaßen aus:

CODE $is_auth_ary = auth(AUTH_ALL, AUTH_LIST_ALL, $userdata, $rowcf[]);


Gruß Dominik
 
Mit dieser Code-Zeile kann vermutlich niemand etwas anfangen
huh.gif
 
Es ist kein Wunder das er damit nichts anfangen kann, da man entweder ein komplettes Array angibt oder eines seiner Felder (bzw. Dimensionen). Die Schreibweise $rowcf[] kann nur innerhalb der Zuweisung verwendet werden. Also:

CODE $rowcf[] = 1;




MfG Sascha Ahlers
 
QUOTE (Sascha Ahlers @ Mo 9.10.2006, 20:41) Es ist kein Wunder das er damit nichts anfangen kann, da man entweder ein komplettes Array angibt oder eines seiner Felder (bzw. Dimensionen). Die Schreibweise $rowcf[] kann nur innerhalb der Zuweisung verwendet werden. Also:


CODE $rowcf[] = 1;




MfG Sascha Ahlers

Ja, das ist klar
tongue.gif

Bei einer Zuweisung würde das einfach fortlaufend nummeriert werden. Aber ohne weiteren Code kann man nicht sagen, was da korrekterweise hineingehören würde. (Meine Glaskugel ist heute etwas verschwommen)
unsure.gif
 
Da seht ihr schon dass ich kein PHP Profi bin
rolleyes.gif


Ich hoffe das reicht?!?

CODE $resultc = mysql_query("SELECT * FROM " . CATEGORIES_TABLE . " ORDER BY cat_title");
while($rowc= mysql_fetch_assoc($resultc))
{
$countf = 0;
$countna = 0;
$resultcf = mysql_query("SELECT * FROM " . FORUMS_TABLE . " WHERE cat_id =" . $rowc["cat_id"] . " ORDER BY forum_name");
while($rowcf= mysql_fetch_assoc($resultcf))
{
$countf = $countf + 1;
$is_auth_ary = array();
$is_auth_ary = auth(AUTH_ALL, AUTH_LIST_ALL, $userdata, $rowcf[]);
if ((!$is_auth_ary[$rowcf['forum_id']]['auth_read']) or (!$is_auth_ary[$rowcf['forum_id']]['auth_view']))
{
$countna = $countna + 1;
}
}




 
Ich hab 100% das gleiche Problem, es liegt an der Umstellung von php4 auf php5

Lösung:
CODE
$is_auth_ary = auth(AUTH_ALL, AUTH_LIST_ALL, $userdata, $$rowcf);



das [] scheint bei php4 also eine Notation für dereferenzieren zu sein, bei php5 ist das halt nur noch mit $$ erlaubt.

Mehr Infos hier (ich will nicht nochmal alles aufschreiben):
http://www.freelancerserver.de/v2/topic,12...or_reading.html

Viel Spaß damit

Gruß Niwo
 
$$ ist keine Dereferenzierung:
http://de3.php.net/manual/de/language.variables.variable.php

korrekter wäre es den Funktionskopf von auth zu ändern, vorher:
CODE function auth($type, $forum_id, $userdata, $f_access = '')


nachher:

CODE function auth($type, $forum_id, $userdata, &$f_access = '')


und dann beim aufrufen die eckigen klammer weglassen:

CODE $is_auth_ary = auth(AUTH_ALL, AUTH_LIST_ALL, $userdata, $rowcf);
 
Zurück
Oben