PHP: Convertendo arrays em objetos

Palavras-chave: PHP, vetor, array, objeto, index

Este trecho de código abaixo é muito útil pois é um modelo de como converter vetores (arrays) em objetos no PHP.

O funcionamento é bastante simples, ele pega um array indexado e o converte em um objeto onde os índices do array serão os nomes das propriedades dos objetos, e o valor do array naquela posição (índice), será o valor da propriedade. O segredo todo está no foreach ;-)

<?php

$a['cor'] = 'azul';
$a['potencia'] = '1000';
$a['marca'] = 'fiat';
$a['modelo'] = 'palio';

foreach ($a as $key => $value)
{
    $objeto->$key = $value;
}
echo $objeto->cor;
echo $objeto->potencia;
echo $objeto->marca;
echo $objeto->modelo;
?>
This entry was posted in PHP. Bookmark the permalink.

11 Responses to PHP: Convertendo arrays em objetos

  1. Lorn says:

    Olá, isso não seria um hash?
    Até mais, e Feliz fim de Natal :)

  2. Olá,

    Hash Tables são utilizadas frequentemente para implementar arrays associativos (como no caso do PHP), veja maiores informações em:
    http://en.wikipedia.org/wiki/Hash_table

    abraços e um ótimo 2007 para vc !
    Pablo

  3. eljunior says:

    buenas!
    qual seria a vantagem de ter o objeto em vez do array?
    em que situação esse troço é útil?

  4. Em se tratando de uma aplicação orientada a objetos, este tipo de macete ganha maior importância, principalmente no momento de converter estruturas como dados retornados do banco de dados. Neste caso, podemos pegar um registro (que geralmente vem como um array associativo) e tratá-lo como um objeto, por exemplo.

  5. Rodrigo Machado says:

    Hum… no PHP 5.1.6:

    Strict Standards: Creating default object from empty value in /home/user/example on line 11

    linha 11:
    $objeto->$key = $value;

  6. Assunção Jr. says:

    Tem uma outro forma de obter o mesmo resultado:

    $a[‘cor’] = ‘azul’;
    $a[‘potencia’] = ‘1000’;
    $a[‘marca’] = ‘fiat’;
    $a[‘modelo’] = ‘palio’;

    $objeto = (object) $a;

    print $objeto->cor;

    Bem mais fácil!

  7. Lucas says:

    Mas e quanto a arrays com indices numéricos?
    Isso não iria funcionar. Certo?

  8. Alessandro says:

    E ao contrário ???? Quero pegar tudo que tem dentro de um objeto!! alguém sabe ??

  9. napoleao says:

    class classe{

    public $var1;
    public $var2;

    function __construct(){
    $this->var1=10;
    $this->var2=”classe”;
    }
    }
    $c=new classe;
    print_r((array) $c);

  10. Bruno says:

    Olá, para converter um array em objetos, vc precisa de mais um cara chamado stdClass(). Esse cara é uma classe vazia, entao ficaria assim:

    $value)
    {
    $objeto->$key = $value;
    }
    echo $objeto->cor;
    echo $objeto->potencia;
    echo $objeto->marca;
    echo $objeto->modelo;
    ?>

    Desta forma funcionaria.

  11. Obrigado pelo artigo e por ajudar no desenvolvimento de programadores PHP!

Comments are closed.