web-dev-qa-db-fra.com

Impossible d'utiliser [] pour la lecture

Dans un de mes scripts, j'essaie de faire ce qui suit

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

Cependant, PHP ne me permet pas de le faire, me donnant ceci error

Erreur fatale: impossible d'utiliser [] pour lire dans /file.php à la ligne 55

La fonction self::get renvoie soit un bool, soit un objet.

Edit: La fonction get crée un nouvel objet qui charge à nouveau les données d'une base de données mysql.

31
eriktm

Les anciennes versions PHP acceptaient $var[] dans les expressions, autorisaient la lecture du contenu $var indépendamment de la syntaxe. PHP 5.1 a rendu cela illégal. Mais parfois, l'erreur est déclenchée en dehors du contexte voulu.
Donc, je suppose (encore: afficher plus de code) est que la ligne précédente contient une expression inachevée, à laquelle le $data[] se joint.

En cas d'attribut d'objet, vous pouvez envelopper votre $ data var dans { }, mais cela ne semble pas être le problème dans votre cas. (Sinon il y a quelque chose dans la ligne 54 que vous n'avez pas montré.) Le côté droit ne peut pas raisonnablement déclencher l'erreur. Même un tableau accédant à [] un entier ou un objet ne déclencherait pas cette erreur fatale.

Donc, si rien n'y fait, utilisez simplement array_Push(). Travaillez autour de PHP.

18
mario

La solution dans mon cas était la suivante:

  • Mauvaise ligne:

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

  • Bonne ligne:

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

ou

$this->ExtraTag[] = $fullscript;

32
SZL

L'erreur que j'ai eu était:

Erreur fatale: impossible d'utiliser [] pour la lecture /pathtosite/drupal/sites/all/themes/zenui/templates/page.tpl.php à la ligne 33

Parfois, le problème survient lorsque vous incluez une ligne comme celle-ci:

$page['sidebar_first'][]

Cela peut arriver si vous copiez un nom de variable et que vous avez oublié de commenter la ligne.

Il y avait deux problèmes:

1. Point-virgule manquant

2. $ variable [] doit définir une variable

Après avoir résolu ces deux problèmes, mon code se lisait comme suit:

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

N'oubliez pas de commenter la ligne que vous n'utilisez pas pour vous aider dans le processus de débogage

J'espère que cela aide les autres programmeurs comme moi!

0
leooutlooks

essayer:

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

Un autre problème possible pourrait être un double ==..__ accidentel. Par exemple, exécuter $myArray[] == $myNewValue; par erreur provoquerait cette erreur (car vous essayez de lire une valeur avec le == au lieu de demander à PHP d'attribuer un nouvel index de tableau).

0
Byson

J'ai eu le même problème avec mon script, la ligne suivante a jeté la même erreur:

$array[]=$value

Je l'ai simplement remplacé par

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

et cela a fonctionné parfaitement.

0
Nino Filiu