2010-09-29 7 views
27

In einem meinem Skripte zu lesen, ich versuche jedoch die folgendenKann [nicht] verwenden für

$data[] = self::get($row['sr_id']); // <-- line 55 

zu tun, wird PHP mir nicht erlauben, dies zu tun, mir diese Fehler geben

Fatal error: Cannot use [] for reading in /file.php on line 55

Die Funktion self::get gibt entweder ein Bool oder ein Objekt zurück.

Bearbeiten: Die Funktion get erstellt ein neues Objekt, das wiederum Daten aus einer MySQL-Datenbank lädt.

+2

Überprüfen Sie, was $ Zeile enthält – Eiko

+1

'print_r ($ Zeile)' –

+0

Können Sie den umgebenden Code/die Methode Get zeigen? – halfdan

Antwort

15

alte PHP-Versionen akzeptiert $var[] in Ausdrücken, erlaubten den $var Inhalt unabhängig von Syntax Auslesen. PHP 5.1 hat das illegal gemacht. Aber manchmal wird der Fehler außerhalb des geplanten Kontextes ausgelöst.
Also meine Vermutung (wieder: mehr Code zeigen) ist, dass die vorherige Zeile enthält einen unvollendeten Ausdruck, zu dem die $data[] verbindet.

Bei Objekt-Attribut können Sie Ihre $ Daten var in { } umhüllen, aber das scheint nicht das Problem in Ihrem Fall zu sein. (Sonst gibt es etwas in Zeile 54, das Sie nicht angezeigt haben.) Die rechte Seite kann den Fehler nicht vernünftig auslösen. Selbst ein Array, das auf [] eine Ganzzahl oder ein Objekt zugreift, würde diesen schwerwiegenden Fehler nicht auslösen.

Wenn nichts hilft, verwenden Sie einfach array_push(). Arbeite mit PHP.

+0

Danke, die 'array_push()' Funktion hat den Trick gemacht, jetzt funktioniert es. :) – eriktm

+0

Könnte es sein, oder vielleicht war das Array nicht definiert oder von einem anderen Typ, der diesen schwerwiegenden Fehler verursachen kann. (Siehe unten). – lucian303

0

Versuch:

$data = Array(); 
$data[] = self::get($row['sr_id']); // <-- line 55 
+0

Nicht initialisierende Arrays verursachen keinen schwerwiegenden Fehler. –

+0

es ist in Ordnung, aber wenn $ data zuvor ein Objekt oder eine Var war, kann es – sathia

+0

Dies ändert sich nicht den Fehler – eriktm

28

Die Lösung in meinem Fall war dies:

  • Bad Leitung:

$this->$ExtraTag[] = $fullscript;

  • Gut Linie:

$this->{$ExtraTag}[] = $fullscript;

oder

$this->ExtraTag[] = $fullscript;

+0

Süß. $ this -> {$ ExtraTag} [] = $ fullscript hat für mich funktioniert! – FateNuller

+1

Ich bin nicht überrascht, dass die erste "schlechte" Zeile nicht funktioniert und die letzte Zeile: die "schlechte" Zeile ist eigentlich ungültige Syntax, und die letzte Zeile ist die beabsichtigte Syntax. Das mittlere Beispiel ist ein hässlicher Workaround, um das erste Beispiel in das dritte zu verwandeln. Ich würde dagegen empfehlen: Es ist weniger klar, weniger prägnant und weniger performant (weil PHP keinen Precompiler hat, um es zum dritten Beispiel zu optimieren). – Byson

0

Der Fehler, den ich bekam, war:

Fatal error: Cannot use [] for reading in /pathtosite/drupal/sites/all/themes/zenui/templates/page.tpl.php on line 33

Irgendwann ist das Problem, wenn Sie eine Zeile wie diese sind:

$page['sidebar_first'][] 

Dies könnte, wenn Sie passieren Kopieren eines Variablennamens und vergessen, die Zeile zu kommentieren.

Es gibt zwei Probleme:

1. Fehlende Semikolon

2. $ variable [] eine Variable

Nach der Fixierung dieser beiden Probleme meinen Code gesetzt muss lauten:

$page['sidebar_first'][] = $value; 

Vergessen Sie nicht, Linie auszukommen Sie sind nicht verwenden, um mit dem Debugging-Prozess zu helfen

Hoffe das hilft Kollegen Programmierer wie ich!

0

ich das gleiche Problem mit meinem Skript hatte, warf die folgende Zeile den gleichen Fehler:

$array[]=$value 

I ersetzt es einfach durch

$array[count($array)-1]=$value 

und es funktionierte perfekt.

0

Ein anderes mögliches Problem könnte eine versehentliche Doppel == sein. Zum Beispiel würde versehentlich $myArray[] == $myNewValue; diesen Fehler verursachen (weil Sie versuchen, einen Wert mit dem == zu lesen, anstatt PHP anzuweisen, einen neuen Arrayindex zuzuweisen).

Verwandte Themen