Não pode usar [] para ler
-
26-09-2019 - |
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.
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