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