Что неожиданного T_VARIABLE в PHP?

Я получаю эту ошибку PHP:

Ошибка синтаксического анализа: синтаксическая ошибка, непредвиденная T_VARIABLE

Из этой строки:

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

Что-то не так с этой строкой?


person omg    schedule 23.09.2009    source источник
comment
X-Ref: PHP Parse/Syntax Errors; и как их решить? - Неожиданный T_VARIABLE для других распространенных причин и исправлений, зависящих от контекста.   -  person mario    schedule 18.08.2015


Ответы (3)


Перед вставленной строкой может отсутствовать точка с запятой или квадратная скобка.

Мне кажется, это нормально; каждая строка разрешена в качестве индекса массива.

person knittl    schedule 23.09.2009
comment
О, вы напомнили мне, что пропущена скобка. Почему она называется T_VARIABLE? - person omg; 23.09.2009
comment
В сообщении об ошибке сообщается, что есть (неожиданно), а не то, чего не хватает. И есть переменная, так что она говорит вам именно это. - person OregonGhost; 23.09.2009
comment
Потому что неожиданное $list является переменной. - person Michael Krelin - hacker; 23.09.2009
comment
потому что php ожидал скобку и нашел переменную, поэтому он говорит вам «неожиданная переменная» - person knittl; 23.09.2009
comment
Ох! пропущена точка с запятой :-\ - person Jayani Sumudini; 12.05.2021

Это может быть и другая линия. PHP не всегда точен.

Возможно, вы просто пропустили точку с запятой в предыдущей строке.

Как воспроизвести эту ошибку, поместите это в файл с именем a.php:

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

Запустить:

eric@dev ~ $ php a.php

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

Пояснение:

Анализатор PHP преобразует вашу программу в серию токенов. T_VARIABLE — это токен типа VARIABLE. Когда синтаксический анализатор обрабатывает токены, он пытается понять их смысл и выдает ошибки, если получает переменную, для которой не разрешено ни одно значение.

В приведенном выше простом случае с переменной $b синтаксический анализатор пытался обработать это:

$a = 5 $b = 7;

Парсер PHP смотрит на $b после 5 и говорит "это неожиданно".

person dusoft    schedule 23.09.2009

В моем случае это была проблема с версией PHP.

Используемый мной файл .phar несовместим с PHP 5.3.9. Переключение интерпретатора на PHP 7 помогло.

person Zank    schedule 18.07.2018