В одном из моих сценариев я пытаюсь сделать следующее
$data[] = self::get($row['sr_id']); // <-- line 55
Однако PHP не позволяет мне это делать, давая мне эту ошибку
Неустранимая ошибка: нельзя использовать [] для чтения в файле /file.php в строке 55
Функция self::get
возвращает либо bool, либо объект.
Изменить: функция get создает новый объект, который снова загружает данные из базы данных mysql.
Старые версии PHP принимали $var[]
в выражениях, позволяя читать содержимое $var
вне зависимости от синтаксиса. PHP 5.1 сделал это незаконным. Но иногда ошибка запускается за пределами намеренного контекста.
Итак, моя догадка (еще раз: показать больше кода) заключается в том, что предыдущая строка содержит недоделанное выражение, к которому присоединяется $data[]
.
В случае атрибута объекта вы можете обернуть ваш $ data var в { }
, но это не похоже на проблему в вашем случае. (Иначе в строке 54 есть что-то, что вы не показывали.) Правая сторона не может разумно вызвать ошибку. Даже массив, получающий доступ к []
целому числу или объекту, не инициировал бы эту фатальную ошибку.
Поэтому, если ничего не помогает, просто используйте array_push()
. Работайте над PHP.
Решение в моем случае состояло в следующем:
$this->$ExtraTag[] = $fullscript;
$this->{$ExtraTag}[] = $fullscript;
или
$this->ExtraTag[] = $fullscript;
пытаться:
$data = Array(); $data[] = self::get($row['sr_id']); // <-- line 55
Я получил ошибку:
Неустранимая ошибка: нельзя использовать [] для чтения в /pathtosite/drupal/sites/all/themes/zenui/templates/page.tpl.php в строке 33
Иногда возникает проблема, когда вы включаете такую строку:
$page['sidebar_first'][]
Это может произойти, если вы копируете имя переменной и забыли прокомментировать строку.
Существовали две проблемы:
1. Отсутствие точки с запятой
2. $ variable [] должна установить переменную
После исправления этих двух проблем мой код читал:
$page['sidebar_first'][] = $value;
Не забудьте прокомментировать строку, которую вы не используете, чтобы помочь в процессе отладки
Надеюсь, это поможет моим программистам, как я!
У меня была такая же проблема с моим скриптом, следующая строка пропустила ту же ошибку:
$array[]=$value
Я просто заменил его на
$array[count($array)-1]=$value
и он работал отлично.
Другая возможная проблема может быть случайным двойным ==
. Например, случайное выполнение $myArray[] == $myNewValue;
приведет к этой ошибке (потому что вы пытаетесь прочитать значение с помощью ==
вместо того, чтобы сообщать PHP о назначении нового индекса массива).