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

  1. 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?

    1. Mateus Souza disse:
      11 de setembro de 2010 às 17:31

      Funciona sim, em todas as versões (atuais pelo menos, rsrs)

  2. 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!

  3. Oeslei disse:
    2 de outubro de 2013 às 15:16

    Cara, muito bom e bem explicado

  4. Cerebro Vasconcelos disse:
    30 de setembro de 2014 às 10:54

    muito bom, mas e no array multidimensional?

    1. André Azevedo disse:
      27 de outubro de 2015 às 09:55

      Tambem pensei nos arrays multidimensionais.

  5. 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.

Faça um Comentário