Umgang mit Daten in einem PHP-JSON-Objekt

85

Trenddaten von der Twitter Search API in JSON.

Abrufen der Datei mit:

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

Wie arbeite ich mit Daten aus diesem Objekt? Als Array? Es müssen nur wirklich Daten aus den [Name] -Werten extrahiert werden.

JSON-Objekt enthält:

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
)

quelle

Antworten:

146

Du meinst so etwas?

<?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
quelle
Gibt es andere Möglichkeiten, die Liste der Namen abzurufen, ohne Schleifen wie $ Trends ["Name"] oder $ Trends [] ["Name"] zu erstellen?
Min Soe
35

Wenn Sie verwenden json_decode($string, true), erhalten Sie keine Objekte, sondern alles als assoziatives oder zahlenindiziertes Array. Viel einfacher zu handhaben, da das von PHP bereitgestellte stdObject nichts anderes als ein dummer Container mit öffentlichen Eigenschaften ist, der nicht mit Ihrer eigenen Funktionalität erweitert werden kann.

$array = json_decode($string, true);

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

Verwenden Sie es einfach so, als wäre es ein Objekt, das Sie definiert haben. dh

$trends = $json_output->trends;
Zak
quelle