failure when trying to assign property of an object with an array index

Asked

Viewed 20 times

0

I am trying to assign the input of an array to an object but am getting the following error; Error: Cannot use Object of type stdClass as array

// filtro estado
             $anuncios = array();
             $anunciosFiltro = $dalAnuncio->pesquisar();
             $dalLocalizacaoAUX = new dalLocalizacao();
             foreach ($anunciosFiltro as $anunciosArray) 
             {
                 $localizacaoPesquisa = new localizacao();
                 $localizacaoPesquisa->setCd($anunciosArray["cd_localizacao"]);  // o erro é reproduzido aqui
                 $localizaEstado = $dalLocalizacaoAUX->pesquisarPorId($localizacaoPesquisa)->getEstado(); 
                 $localizaMunicpio = $dalLocalizacaoAUX->pesquisarPorId($localizacaoPesquisa)->getMunicipio();
                 if($estado == $localizaEstado)
                 {
                     $anunciosQtdTotal++;
                         if(count($anuncios) < $max)
                         {
                         $anuncios[] = $anunciosArray;
                         }
                 }
             }
             $result['totalAnuncios'] = $anunciosQtdTotal;
            $anuncios = $dalAnuncio->filtrarPorEstado($estado, $init, $max);
            $result['totalAnuncios'] = count($anuncios);
        }

1 answer

1


This is happening because you are trying to access the key of an object as if the object were an array. You can’t tell by your code, but it would be $anunciosFiltro generated by a JSON? JSON_DECODE generates objects instead of arrays.

Anyway, to access keys of an object, use ->

$anunciosArray['cd_localizacao'];  /*forma de acessar a chave de um array*/
$anunciosArray->cd_localizacao;    /*forma de acessar a chave de um objeto*/

$chave = 'cd_localizacao';
$anunciosArray[$chave];    /*forma de acessar a chave de um array dinamicamente*/
$anunciosArray->{$chave};  /*forma de acessar a chave de um objeto dinamicamente*/

Browser other questions tagged

You are not signed in. Login or sign up in order to post.