Qu'est-ce que T_VARIABLE inattendu en PHP?


86

J'obtiens cette erreur PHP:

Erreur d'analyse: erreur de syntaxe, T_VARIABLE inattendu

À partir de cette ligne:

$list[$i][$docinfo['attrs']['@groupby']] = $docinfo['attrs']['@count'];

Y a-t-il quelque chose qui ne va pas avec cette ligne?


1
X-Ref: erreurs d'analyse / syntaxe PHP; et comment les résoudre? - T_VARIABLE inattendu pour les autres causes courantes et corrections spécifiques au contexte.
mario

Réponses:


189

Il peut y avoir un point-virgule ou un crochet manquant une ligne avant votre ligne collée.

Cela me semble bien; chaque chaîne est autorisée en tant qu'index de tableau.


Oh tu m'as rappelé que c'est un crochet manqué, pourquoi ça s'appelle T_VARIABLE?
omg le

2
Le message d'erreur vous indique ce qui est là (inattendu), pas ce qui manque. Et il y a une variable, donc ça vous dit exactement cela.
OregonGhost

2
Parce que l'inattendu $listest une variable.
Michael Krelin - hacker

2
parce que php attendait une parenthèse et a trouvé une variable, c'est pourquoi il vous indique 'variable inattendue'
knittl

24

Cela pourrait aussi être une autre ligne. PHP n'est pas toujours aussi exact.

Il vous manque probablement un point-virgule sur la ligne précédente.

Comment reproduire cette erreur, placez-le dans un fichier appelé a.php:

<?php
  $a = 5
  $b = 7;        // Error happens here.
  print $b;
?>

Exécuter:

eric@dev ~ $ php a.php

PHP Parse error:  syntax error, unexpected T_VARIABLE in
/home/el/code/a.php on line 3

Explication:

L'analyseur PHP convertit votre programme en une série de jetons. UNET_VARIABLE est un jeton de type VARIABLE. Lorsque l'analyseur traite des jetons, il essaie de les comprendre et renvoie des erreurs s'il reçoit une variable là où aucune n'est autorisée.

Dans le cas simple ci-dessus avec variable $b, l'analyseur a essayé de traiter ceci:

$a = 5 $b = 7;

L'analyseur PHP regarde le $ b après le 5 et dit "c'est inattendu".


2

Dans mon cas, c'était un problème de version PHP.

Le fichier .phar que j'utilisais n'était pas compatible avec PHP 5.3.9. Le passage de l'interpréteur à PHP 7 l'a corrigé.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.