¿Cómo obtener datos de un objeto JSON?

Estoy tratando de recuperar datos de un objeto JSON que se ve así:

stdClass Object
(
[query] => stdClass Object
    (
        [results] => stdClass Object
            (
                [quote] => Array
                    (
                        [0] => stdClass Object
                            (
                                [foo] => bar
                            )
                        [1] => stdClass Object
                            (
                                [foo] => blah
                            )

Creé el objeto así:

$json = curl_exec($session);
$stock_data = json_decode($json);

He estado leyendo varias publicaciones sobre cómo hacer esto (Este fue extremadamente útil) pero todavía estoy atascado. Sé que necesito iterar sobre los datos, pero no estoy exactamente seguro de cómo se verían las declaraciones foreach (es decir, la profundidad de ellas, por así decirlo). Me doy cuenta de que esto debería ser relativamente simple, pero no puedo entenderlo en este momento (eso es lo que te hace ser evacuado). ¡Cualquier ayuda será muy apreciada!

EDITAR: Después de pensarlo un rato, esto es lo que se me ocurrió:

foreach( $stock_data->query->results as $quote) {
           foreach ($quote as $entry) {
                print $entry->{'foo'} ;
            }
       }

Esto luego imprimirá con éxito tanto la barra como el bla

preguntado el 27 de agosto de 11 a las 20:08

¿En qué nivel quieres recorrer en iteración? Será fundamentalmente una mezcla de matrices y objetos PHP, por ejemplo echo $object->query->results->quote[0]->foo -

Quería iterar a través de cada objeto dentro de la cita. ¡Sin embargo, me las arreglé para resolverlo! -

2 Respuestas

$quotes = $stock_data->query->results->quote;
foreach ($quotes as $q)
{
  echo $q->foo;
}

Respondido 28 ago 11, 00:08

¡Bonito! Se me ocurrió mi propia solución, pero las dos parecen ser extremadamente similares. - thomascirca

foreach( $stock_data->query->results as $quote) {
       foreach ($quote as $entry) {
            print $entry->{'foo'} ;
        }
   }

Respondido 28 ago 11, 00:08

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.