Не могу использовать [] для чтения - PullRequest
33 голосов
/ 29 сентября 2010

В одном из моих скриптов я пытаюсь сделать следующее

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

Тем не менее, PHP не позволяет мне сделать это, давая мне эту ошибку

Неустранимая ошибка: невозможно использовать [] для чтения в /file.php в строке 55

Функция self::get возвращает либо bool, либо объект.

Редактировать: Функция get создает новый объект, который снова загружает данные из базы данных mysql.

Ответы [ 7 ]

32 голосов
/ 19 ноября 2011

Решение в моем случае было следующим:

  • Плохая строка:

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

  • Хорошая строка:

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

или

$this->ExtraTag[] = $fullscript;

20 голосов
/ 29 сентября 2010

Старые версии PHP, принимаемые в выражениях $var[], позволяли считывать содержимое $var независимо от синтаксиса.PHP 5.1 сделал это незаконным.Но иногда ошибка вызывается вне преднамеренного контекста.
Так что мое предположение (снова: показать больше кода) состоит в том, что в предыдущей строке содержится незаконченное выражение, к которому присоединяется $data[].

В случае атрибута объекта вы можете заключить ваш $ data var в { }, но в вашем случае это не проблема.(Иначе в строке 54 есть что-то, что вы не показывали.) Правая сторона не может разумно вызвать ошибку.Даже массив, обращающийся к [] целому числу или объекту, не вызовет этой фатальной ошибки.

Так что, если ничего не помогает, просто используйте array_push().Обойти PHP.

0 голосов
/ 10 марта 2019

У меня была та же ошибка со следующим:

echo implode(',', $array[]);

, который должен был быть

echo implode(',', $array);

Надеюсь, это может кому-то помочь

0 голосов
/ 21 июля 2017

Другая возможная проблема может быть случайным двойным ==.Например, случайное выполнение $myArray[] == $myNewValue; может вызвать эту ошибку (потому что вы пытаетесь прочитать значение с помощью == вместо того, чтобы сказать PHP назначить новый индекс массива).

0 голосов
/ 22 июня 2017

У меня была та же проблема с моим скриптом, следующая строка выдавала ту же ошибку:

$array[]=$value

Я просто заменил ее на

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

, и она отлично работала.

0 голосов
/ 03 февраля 2014

Я получил ошибку:

Неустранимая ошибка: невозможно использовать [] для чтения в /pathtosite/drupal/sites/all/themes/zenui/templates/page.tpl.php в строке 33

Иногда проблема заключается в том, что вы добавляете такую ​​строку:

$page['sidebar_first'][]

Это может произойти, если вы копируете имя переменной и забыли закомментировать строку.

Было две проблемы:

1. Отсутствует точка с запятой

2. $ variable [] должен установить переменную

После исправления этих двух проблем мой код читал:

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

Не забудьте закомментировать строку, которую вы не используете, чтобы помочь с процессом отладки

Надеюсь, это поможет таким программистам, как я!

0 голосов
/ 29 сентября 2010

попробуй:

$data = Array();
$data[] = self::get($row['sr_id']); // <-- line 55
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...