Xử lý dữ liệu trong một đối tượng JSON PHP


85

Dữ liệu xu hướng từ API tìm kiếm của Twitter trong JSON.

Lấy tệp bằng cách sử dụng:

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

Làm cách nào để làm việc với dữ liệu từ đối tượng này. Như một mảng? Chỉ thực sự cần trích xuất dữ liệu từ các giá trị [tên].

Đối tượng JSON chứa:

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 

Câu trả lời:


146

Ý bạn là một cái gì đó như thế này?

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

có cách nào khác để lấy danh sách tên mà không bị lặp lại như $ xu hướng ["name"] hoặc $ xu hướng [] ["tên"] không?
Min Soe

35

Nếu bạn sử dụng json_decode($string, true), bạn sẽ không nhận được đối tượng nào, nhưng mọi thứ dưới dạng một mảng liên kết hoặc số được lập chỉ mục. Cách xử lý dễ dàng hơn, vì stdObject do PHP cung cấp không gì khác ngoài một vùng chứa câm với các thuộc tính công khai, không thể mở rộng bằng chức năng của riêng bạn.

$array = json_decode($string, true);

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

8

Chỉ cần sử dụng nó giống như nó là một đối tượng bạn đã xác định. I E

$trends = $json_output->trends;
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.