Manejo de datos en un objeto JSON PHP

85

Tendencias de datos de la API de búsqueda de Twitter en JSON.

Tomando el archivo usando:

$jsonurl = "http://search.twitter.com/trends.json";
$json = file_get_contents($jsonurl,0,null,null);
$json_output = json_decode($json);

¿Cómo trabajo con datos de este objeto? ¿Como una matriz? Realmente solo es necesario extraer datos de los valores de [nombre].

El objeto JSON contiene:

stdClass Object
(
    [trends] => Array
        (
            [0] => stdClass Object
                (
                    [name] => Vote
                    [url] => http://search.twitter.com/search?q=Vote
                )

            [1] => stdClass Object
                (
                    [name] => Halloween
                    [url] => http://search.twitter.com/search?q=Halloween
                )

            [2] => stdClass Object
                (
                    [name] => Starbucks
                    [url] => http://search.twitter.com/search?q=Starbucks
                )

            [3] => stdClass Object
                (
                    [name] => #flylady
                    [url] => http://search.twitter.com/search?q=%23flylady
                )

            [4] => stdClass Object
                (
                    [name] => #votereport
                    [url] => http://search.twitter.com/search?q=%23votereport
                )

            [5] => stdClass Object
                (
                    [name] => Election Day
                    [url] => http://search.twitter.com/search?q=%22Election+Day%22
                )

            [6] => stdClass Object
                (
                    [name] => #PubCon
                    [url] => http://search.twitter.com/search?q=%23PubCon
                )

            [7] => stdClass Object
                (
                    [name] => #defrag08
                    [url] => http://search.twitter.com/search?q=%23defrag08
                )

            [8] => stdClass Object
                (
                    [name] => Melbourne Cup
                    [url] => http://search.twitter.com/search?q=%22Melbourne+Cup%22
                )

            [9] => stdClass Object
                (
                    [name] => Cheney
                    [url] => http://search.twitter.com/search?q=Cheney
                )

        )

    [as_of] => Mon, 03 Nov 2008 21:49:36 +0000
)

fuente

Respuestas:

146

¿Te refieres a algo como esto?

<?php

$jsonurl = "http://search.twitter.com/trends.json";
$json = file_get_contents($jsonurl,0,null,null);
$json_output = json_decode($json);

foreach ( $json_output->trends as $trend )
{
    echo "{$trend->name}\n";
}
Peter Bailey
fuente
¿Hay alguna otra forma de obtener la lista de nombres sin bucles como $ tendencias ["nombre"] o $ tendencias [] ["nombre"]?
Min Soe
35

Si lo usa json_decode($string, true), no obtendrá objetos, sino todo como una matriz asociativa o indexada por números. Es mucho más fácil de manejar, ya que stdObject proporcionado por PHP no es más que un contenedor tonto con propiedades públicas, que no se puede ampliar con su propia funcionalidad.

$array = json_decode($string, true);

echo $array['trends'][0]['name'];
Sven
fuente
8

Úselo como si fuera un objeto que usted definió. es decir

$trends = $json_output->trends;
Zak
fuente