Question

Scénario:

$x = json_decode( $x );
foreach ( $x as $item )
{
    $info[] = $item;  //ERROR
}

Je boucle dans un flux de données pour obtenir les données. Je veux ajouter des éléments à un objet stdClass dans une boucle. Comment je ferais ça? Je ne connais pas très bien stdobj.

Était-ce utile?

La solution

Si vous vous attendez à ce que le code_json renvoie un tableau, procédez comme suit:

$x = json_decode( $x, true ); // returns associative array instead of object
$info = (object) $x;

Plus d’informations et d’exemples peuvent être trouvés ici .

Autres conseils

Si je vous ai bien compris, vous devriez pouvoir suivre la syntaxe standard des objets pour obtenir le résultat souhaité. Ajoutez le deuxième paramètre facultatif à json_decode défini sur true pour obtenir votre json décodé en tant que tableau associatif, car il semble que ce soit le formulaire dans lequel vous l'utilisez. .

$info = new stdClass();
$x = json_decode( $x, true );
foreach ( $x as $key => $val) { 
    $info->$key = $val;
}

Comme Ignas l'a fait remarquer, les résultats de json_decode () sont déjà renvoyés sous forme d'objet stdClass. Par conséquent, si vous venez d'utiliser $ x = json_decode ($ x) , vous n’auriez pas besoin de $ info du tout ... vous auriez déjà $ x en tant qu’objet stdClass.

ArrayObject SPL > vous permet d'utiliser la même syntaxe qui génère une erreur dans votre exemple. Ceci est fourni à condition que vous puissiez utiliser un ArrayObject au lieu d'un stdClass .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top