การจัดการข้อมูลใน PHP JSON Object


85

ข้อมูลแนวโน้มจาก Twitter Search API ใน JSON

จับไฟล์โดยใช้:

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

ฉันจะทำงานกับข้อมูลจากวัตถุนี้ได้อย่างไร เป็นอาร์เรย์? จำเป็นต้องดึงข้อมูลจากค่า [name] เท่านั้น

วัตถุ JSON ประกอบด้วย:

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
)
php  json 

คำตอบ:


146

คุณหมายถึงอะไรแบบนี้?

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

มีวิธีอื่นในการรับรายชื่อโดยไม่ต้องวนซ้ำเช่น $ trend ["name"] หรือ $ trend [] ["name"] ไหม
Min Soe

35

หากคุณใช้json_decode($string, true)คุณจะไม่ได้รับวัตถุ แต่ทุกอย่างเป็นอาร์เรย์ที่เชื่อมโยงหรือดัชนีตัวเลข วิธีจัดการที่ง่ายกว่าเนื่องจาก stdObject ที่ PHP จัดหาให้นั้นไม่ใช่แค่คอนเทนเนอร์ใบ้ที่มีคุณสมบัติสาธารณะซึ่งไม่สามารถขยายได้ด้วยฟังก์ชันของคุณเอง

$array = json_decode($string, true);

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

8

เพียงใช้มันเหมือนเป็นวัตถุที่คุณกำหนด กล่าวคือ

$trends = $json_output->trends;
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.