Como Converter Arrays em Objetos e Vice-Versa Usando Uma Linha de Código
Nem sempre o que temos é o que queremos, e trabalhar com arrays e objetos simultaneamente acaba se tornando chato, eu pessoalmente não gosto muito de arrays, principalmente quando é para exibir na tela os resultados de uma pesquisa do banco de dados ou coisa do tipo.
Já vi em muitos código fontes, funções um tanto que imensas para realizar a tarefa de conversão de tipos – arrays para objetos ou objetos para arrays. Mas o que muita gente não sabe é que existe um atalho para isto, simples e rápido. Vejamos um exemplo:
$dados = array('nome' =>'Mateus', 'sexo'=>'Masculino'); echo $dados['nome']; //Resultado: Mateus echo $dados->nome; //Resultado: Erro $dados = (object) $dados; //É aqui que tudo funciona... echo $dados->nome; //Resultado: Mateus
Anteriormente tinhamos uma array – $dados -, que em um “passe de mágica” virou um objeto. Para converter um objeto em uma array o processo é bem simples também:
$array = (array) $objeto;
Também é possível formatar outros tipos, como string, integer ou float:
$numero = (float) $numero; $boolean = (boolean) $boolean; $string = (string) $string; ....
Tecnicamente falando, este processo é chamado de Type Casting, ou Tipo de Vazamento em português e como o próprio nome já diz, ele converte o modo de vazamento (ou distribuição) de um elemento. Para saber um pouco mais, veja no manual do PHP sobre Type Casting.
Se você não sabe o tipo do elemento, use a função var_dump ou a função para debug. Até mais.
7 Comentários
Carlos Filho disse:
11 de setembro de 2010 às 15:57
Até que enfim um jeito decente de converter. Nunca tinha pensado nisso nem testado. Funciona no 5.2?
Mateus Souza disse:
11 de setembro de 2010 às 17:31
Funciona sim, em todas as versões (atuais pelo menos, rsrs)
laboratory technician disse:
5 de outubro de 2010 às 11:14
Great information! I’ve been looking for something like this for a while now. Thanks!
Oeslei disse:
2 de outubro de 2013 às 15:16
Cara, muito bom e bem explicado
Cerebro Vasconcelos disse:
30 de setembro de 2014 às 10:54
muito bom, mas e no array multidimensional?
André Azevedo disse:
27 de outubro de 2015 às 09:55
Tambem pensei nos arrays multidimensionais.
Fernando Santana disse:
7 de novembro de 2015 às 20:38
Oi, legal pode resolver meu problema, funciona para array dentro de array? Com indices como $dados[0][1];
Vou testar e volto aqui para comentar.