Conversion d'un objet PHP stdClass en tableau

Publié le 27/07/2024 • Actualisé le 27/07/2024


English language detected! 🇬🇧

  We noticed that your browser is using English. Do you want to read this post in this language?

Read the english version 🇬🇧 Close

Dans ce bout de code, nous voyons comment convertir un objet PHP stdClass en tableau. Il y a cette fameuse astuce utilisant la fonction json_encode() et sa fonction opposée json_decode(). On a aussi un exemple montrant qu'utiliser un cast ne fonctionne pas, car la conversion n'est pas faite récursivement. Plus de détails et d'informations dans le lien StackOverflow ci-dessous.


<?php

declare(strict_types=1);

namespace App\Controller\Snippet;

/**
 * J'utilise un trait PHP afin d'isoler chaque snippet dans un fichier.
 * Ce code doit être apellé d'un contrôleur Symfony étendant AbstractController (depuis Symfony 4.2)
 * ou Symfony\Bundle\FrameworkBundle\Controller\Controller (Symfony <= 4.1).
 * Les services sont injectés dans le constructeur du contrôleur principal.
 */
trait Snippet311Trait
{
    public function snippet311(): void
    {
        $stdClass = new \stdClass();
        $stdClass->foo = 'bar';
        $stdClass->object_property = new \stdClass();
        $stdClass->object_property->foo2 = 'bar2';

        echo '----- Nominal case OK ✅'.PHP_EOL;
        echo '> original object:'.PHP_EOL;
        $array = json_decode((string) json_encode($stdClass), true);
        var_dump($stdClass);
        echo '> as array:'.PHP_EOL;
        var_dump($array);
        echo PHP_EOL;

        // With a cast, it doesn't work as the object_property is not converted into an array
        echo '----- cast case, does not work ❌'.PHP_EOL;
        var_dump((array) $stdClass);

        // That's it! 😁
    }
}

 Exécuter le snippet  Plus sur Stackoverflow   Lire la doc  Snippet aléatoire

  Travaillez avec moi !