Pergunta

Em um dos meus scripts, tento fazer o seguinte

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

No entanto, o PHP não me permite fazer isso, dando -me isso erro

Erro fatal: não pode usar [] para ler em /file.php na linha 55

o self::get Função retorna um bool ou um objeto.

Editar: A função GET cria um novo objeto que carrega novamente dados de um banco de dados MySQL.

Foi útil?

Solução

Versões antigas de PHP aceitas $var[] nas expressões, permitido a ler o $var conteúdo, independentemente da sintaxe. O PHP 5.1 tornou isso ilegal. Mas às vezes o erro é desencadeado fora do contexto pretendido.
Então meu palpite (novamente: mostre mais código) é que a linha precedente contém uma expressão inacabada, à qual o $data[] Junta -se.

No caso de atributo de objeto, você pode envolver seu $ data var no { }, mas esse não parece ser o problema no seu caso. (Caso contrário, há algo na linha 54, que você não mostrou.) O lado direito não pode razoavelmente acionar o erro. Até o acesso à matriz [] Um número inteiro ou objeto não desencadearia esse erro fatal.

Então, se nada ajudar, basta usar array_push(). Trabalho em torno do PHP.

Outras dicas

A solução no meu caso foi a seguinte:

  • Linha ruim:

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

  • Linha boa:

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

ou

$this->ExtraTag[] = $fullscript;

tentar:

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

O erro que recebi foi:

Erro fatal: não posso usar [] para ler em /pathtosifed/drupal/sites/all/themes/zenui/templates/page.tpl.php na linha 33

Em algum momento, o problema é quando você inclui uma linha como esta:

$page['sidebar_first'][]

Isso pode acontecer se você estiver copiando um nome de variável e esqueceu de comentar a linha.

Havia dois problemas:

1. Faltando ponto-e-vírgula

2. $ variável [] deve definir uma variável

Depois de corrigir esses dois problemas, meu código dizia:

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

Não se esqueça de comentar a linha que você não está usando para ajudar no processo de depuração

Espero que isso ajude outros programadores como eu!

Eu tive o mesmo problema com o meu script, a linha a seguir lançou o mesmo erro:

$array[]=$value

Eu simplesmente o substituí por

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

E funcionou perfeitamente.

Outro problema possível pode ser um duplo acidental ==. Por exemplo, acidentalmente fazendo $myArray[] == $myNewValue; causaria esse erro (porque você está tentando ler um valor com o == em vez de dizer ao PHP para atribuir um novo índice de matriz).

Eu tive o mesmo erro com o seguinte:

echo implode(',', $array[]);

o que deveria ter sido

echo implode(',', $array);

Espero que isso possa ajudar alguém

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top