Converter objeto PHP em matriz associativa

Subodh Poudel 30 janeiro 2023
  1. Use a palavra-chave array para fazer o Typecast do objeto StdClass para converter em um array associativo em PHP
  2. Use o objeto StdClass dentro de uma classe definida pelo usuário para converter o objeto em um array associativa em PHP
  3. Use as funções json_encode() e json_decode() para converter o objeto em um array associativo em PHP
Converter objeto PHP em matriz associativa

Apresentaremos um método para converter o objeto PHP em um array associativo, lançando os objetos de StdClass usando a palavra-chave array. Usaremos a função var_dump() para exibir o array associativo.

A segunda abordagem demonstra outro método para converter o objeto PHP em um array associativo criando uma StdClass no construtor de uma classe definida pelo usuário. Vamos converter o objeto em um array associativo como no primeiro método usando a palavra-chave array. Este método segue a abordagem orientada a objetos.

Também apresentaremos outro método para converter o objeto em array associativo em PHP usando as funções json_encode() e json_decode(). Usaremos a StdClass para criar o objeto e as propriedades dinâmicas.

Use a palavra-chave array para fazer o Typecast do objeto StdClass para converter em um array associativo em PHP

Podemos criar a classe vazia StdClass para criar um objeto em PHP e usar o objeto para criar propriedades. O objeto da classe pode acessar diretamente as propriedades. Ele também pode criar propriedades dinâmicas para a classe. Podemos usar o objeto array para fazer o typecast do objeto em um array. A função var_dump() despeja as informações sobre o tipo e os valores do array.

Por exemplo, crie um objeto $object de StdClass usando o operador new. Crie duas propriedades usando o $object denominado car1 e car2. Atribua às propriedades os valores porsche e bugatti. Use a palavra-chave array para typecast a variável $object. Envolva a palavra-chave array com parênteses antes da variável $object e descarregue o valor usando a função var_dump(). O exemplo a seguir converte os objetos em um array associativa, conforme mostrado na seção de saída. Ele mostra os pares de chave e valor para cada elemento do array.

Código de exemplo:

#php 7.x 
<?php
$object = new StdClass;
$object->car1 = "porsche";
$object->car2 = "bugatti";
var_dump( (array) $object );
?>

Resultado:

array(2) { ["car1"]=> string(7) "porsche" ["car2"]=> string(7) "bugatti" }

Use o objeto StdClass dentro de uma classe definida pelo usuário para converter o objeto em um array associativa em PHP

Podemos criar uma instância de StdClass no construtor da classe e usar a palavra-chave array para converter o objeto da classe em um array associativo. Podemos criar uma classe e definir algumas propriedades dela. O construtor da classe inicializa as propriedades da classe para valores específicos. Podemos criar um objeto da StdClass e atribuí-lo a uma das propriedades da classe. O operador new, junto com a classe, invoca o construtor. Podemos usar a palavra-chave array logo antes da invocação para converter o objeto da classe em um array associativo.

Por exemplo, crie uma classe Motorcycle. Crie três propriedades de classe com o modificador de acesso private como $name, $color e $type. Crie um construtor da classe e dentro do construtor inicialize os valores das propriedades. Escreva Husky para name, white para color e crie um objeto da StdClass para type. Use a palavra-chave $this para inicializar as propriedades. Fora da classe, invoque a classe Motorcycle e use a palavra-chave array para fazer o typecast antes de invocar. Use a função var_dump() para despejar as informações sobre o array typecasted.

Código de exemplo:

#php 7.x 
class Motorcycle{
    private $name;
    private $color;
    private $type;
    public function __construct(){
        $this->name = "Husky";
        $this->color = "white";
        $this->type = new StdClass;
    }
}
var_dump( (array) new Motorcycle );

Resultado:

array(3) { ["Motorcyclename"]=> string(5) "Husky" ["Motorcyclecolor"]=> string(5) "white" ["Motorcycletype"]=> object(stdClass)#2 (0) { } }

Use as funções json_encode() e json_decode() para converter o objeto em um array associativo em PHP

A função json_encode() codifica um valor para o objeto JSON e a função json_decode() converte o objeto JSON em objeto PHP. O valor booleano, o segundo parâmetro da função json_decode(), indica o que o objeto JSON deve ser convertido. O valor true irá converter o objeto JSON em um array associativo, enquanto o valor false irá convertê-lo em um objeto PHP.

Por exemplo, crie um objeto da StdClass e atribua-o à variável $object. Nomeie dois valores da propriedade do objeto como Mustang e Manang e armazene-os nas variáveis ​​place1 e place2. Use a função json_encode() na variável $object e armazene o valor na variável $json. Então, use a função json_decode() na variável $json e use o valor booleano true como o segundo parâmetro. Armazene o valor na variável $array. Descarregue a variável usando a função var_dump().

No exemplo abaixo, a variável $object contém o objeto StdClass. A função json_ecode() converte o objeto na string JSON. A função json_decode() converte a string JSON no array associativo.

Código de exemplo:

#php 7.x 
<?php
$object = new StdClass;
$object->place1 = "Mustang";
$object->place2 = "Manang";
$json= json_encode($object);
$array = json_decode($json, true);
var_dump($array);
?>

Resultado:

array(2) { ["place1"]=> string(7) "Mustang" ["place2"]=> string(6) "Manang" }
Subodh Poudel avatar Subodh Poudel avatar

Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.

LinkedIn

Artigo relacionado - PHP Object