Domanda

Scenario:

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

Sto eseguendo il ciclo continuo di un feed di dati per ottenere i dati. Voglio aggiungere elementi a un oggetto stdClass in un ciclo. Come potrei farlo? Non ho molta familiarità con stdobj.

È stato utile?

Soluzione

Se si prevede che json_decode restituisca un array, è possibile effettuare le seguenti operazioni:

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

Ulteriori informazioni ed esempi sono disponibili qui .

Altri suggerimenti

Se ti capisco correttamente, dovresti essere in grado di seguire la normale sintassi degli oggetti per ottenere il risultato desiderato. Aggiungi il secondo parametro facoltativo a json_decode impostato su true per far decodificare il tuo json come array associativo, come se questo fosse il modulo in cui lo stai utilizzando .

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

Come ha sottolineato Ignas, i risultati di json_decode () tornano già come oggetto stdClass, quindi se hai appena usato $ x = json_decode ($ x) , non avresti bisogno di $ info ... avresti già $ x come oggetto stdClass.

ArrayObject ?? SPL > usiamo la stessa sintassi che genera un errore nel tuo esempio. Questo a condizione che tu abbia la possibilità di usare un ArrayObject invece di un stdClass .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top