Подтвердить что ты не робот

Невозможно использовать [] для чтения

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

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

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

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

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

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

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

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

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

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

или

$this->ExtraTag[] = $fullscript;

Ответ 3

попробовать:

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

Ответ 4

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

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

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

$page['sidebar_first'][]

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

Существовали две проблемы:

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

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

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

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

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

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

Ответ 5

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

$array[]=$value

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

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

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

Ответ 6

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