Невозможно использовать [] для чтения
В одном из моих сценариев я пытаюсь сделать следующее
$data[] = self::get($row['sr_id']); // <-- line 55
Однако PHP не позволяет мне это делать, предоставляя мне эту ошибку
Неустранимая ошибка: Невозможно использовать [] для чтения в /file.php в строке 55
Функция self::get
возвращает либо bool, либо объект.
Изменить: Функция get создает новый объект, который снова загружает данные из базы данных mysql.
Ответы
Ответ 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 о назначении нового индекса массива).