PHP JSON nesnesi veri işleme

4 Cevap php

JSON Twitter Arama API Trendleri verilerini.

Kullanarak dosyayı kapma:

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

Nasıl bu nesneden veri ile çalışır. Bir dizi olarak? Yalnızca gerçekten [name] değerlerden veri ayıklamak gerekiyor.

JSON nesne içerir:

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
)

4 Cevap

Böyle bir şey mi?

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

Eğer json_decode($string, true) kullanırsanız, hiçbir nesneleri almak, ancak bir birleştirici veya sayı endeksli dizi gibi her şey. PHP tarafından sağlanan stdObject kendi işlevselliği ile uzatılamaz kamu özelliklere sahip bir aptal kap ama hiçbir şey olduğu gibi yolu daha kolay işlemek için.

$array = json_decode($string, true);

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

Tanımladığınız bir nesne gibi sadece kullanabilirsiniz. yani

$trends = $json_output->trends;

Ben sadece , .. taze 20 eğilimleri oluşturmak var bunu çalışıyorum ..

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