Вопрос

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

$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);

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top