Pregunta

Escenario:

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

Estoy haciendo un bucle a través de una fuente de datos para obtener los datos. Quiero agregar elementos a un objeto stdClass en un bucle. ¿Como podría hacerlo? No estoy tan familiarizado con stdobj.

¿Fue útil?

Solución

Si espera que json_decode devuelva una matriz, podría hacer lo siguiente:

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

Se puede encontrar más información y ejemplos aquí .

Otros consejos

Si te comprendo correctamente, deberías poder seguir la sintaxis de los objetos para obtener el resultado que deseas. Agregue el segundo parámetro opcional a json_decode establecido en true para obtener su json descodificado como una matriz asociativa, ya que parece que esta es la forma en la que lo está usando .

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

Sin embargo, como señaló Ignas, los resultados de json_decode () ya regresan como un objeto stdClass, por lo que si solo usaste $ x = json_decode ($ x) , no necesitarías $ info en absoluto ... ya tendrías $ x como un objeto stdClass.

SPL 's ArrayObject te permite usar la misma sintaxis que genera un error en tu ejemplo. Esto se proporciona si tiene la capacidad de usar un ArrayObject en lugar de un stdClass .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top