【问题标题】:Handling data in a PHP JSON Object处理 PHP JSON 对象中的数据
【发布时间】:2010-09-20 18:35:07
【问题描述】:

来自 Twitter 搜索 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


    【解决方案1】:

    你的意思是这样的?

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

    【讨论】:

    • 有没有其他方法可以在不循环的情况下获取名称列表,例如 $trends["name"] 或 $trends[]["name"] ?
    【解决方案2】:

    如果您使用json_decode($string, true),您将不会获得任何对象,而是将所有内容作为关联数组或数字索引数组。更容易处理,因为 PHP 提供的 stdObject 只不过是一个具有公共属性的哑容器,无法使用您自己的功能进行扩展。

    $array = json_decode($string, true);
    
    echo $array['trends'][0]['name'];
    

    【讨论】:

      【解决方案3】:

      就像你定义的对象一样使用它。即

      $trends = $json_output->trends;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-03-27
        • 2015-09-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-19
        • 2015-09-30
        相关资源
        最近更新 更多