68 votes

Manipulation des données dans un objet PHP JSON

Données sur les tendances provenant de l'API de recherche Twitter en JSON.

Je saisis le fichier en utilisant :

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

Comment puis-je travailler avec les données de cet objet. Comme un tableau ? J'ai seulement besoin d'extraire les données des valeurs [name].

L'objet JSON contient :

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
)

119voto

Peter Bailey Points 62125

Vous voulez dire quelque chose comme ça ?

<?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";
}

24voto

Sven Points 259

Si vous utilisez json_decode($string, true) vous n'obtiendrez aucun objet, mais tout sous forme de tableau associatif ou indexé par un nombre. C'est beaucoup plus facile à gérer, car le stdObject fourni par PHP n'est rien d'autre qu'un simple conteneur avec des propriétés publiques, qui ne peut pas être étendu avec vos propres fonctionnalités.

$array = json_decode($string, true);

echo $array['trends'][0]['name'];

7voto

Zak Points 10160

Utilisez-le comme s'il s'agissait d'un objet que vous avez défini, par exemple.

$trends = $json_output->trends;

3voto

Aming Points 31

J'essaie juste celui-ci , c'est créer de nouvelles tendances 20

<?php

$trends_url = "http://search.twitter.com/trends/daily.json";

// initialise the session
$ch = curl_init();

// Set the URL
curl_setopt($ch, CURLOPT_URL, $trends_url);

// Return the output from the cURL session rather than displaying in the browser.
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

//Execute the session, returning the results to $curlout, and close.
$curlout = curl_exec($ch);
curl_close($ch);

$response = json_decode($curlout, true);

foreach(array_keys($response['trends']) as $hours){
print("<h3>".$hours."</h3>");
for($c=0; $c < 20; $c++){
print( ($c+1).". : ".$response['trends'][$hours][$c]['name']."<br />\n");
}
}
// If you want to see the json_decode output just uncomment out the next 2 lines
// $v = var_export($response);
// echo $v;
?>

0voto

DanAlexson90 Points 9

La manière propre serait :

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

foreach ($trends as $trend) {
    your_func($trend['name']);
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X