【问题标题】:json_decode() getting valuesjson_decode() 获取值
【发布时间】:2014-04-29 17:16:01
【问题描述】:

我正在尝试从 Statcounter API 获取 json 数据。

我有以下几点:

$query = makeQuery("2292634", "demo_user", "statcounter", "visitor", "");
echo $query . "<br>";
$response = file_get_contents($query, true);
$data = json_decode($response, true);
echo $data['sc_data']['log_visits'];

我知道查询是正确的,并且我知道$response 填充了未格式化的 json。问题是访问数组并取出值。

这是它给我的未格式化 json 的前几行。

此链接只能使用 15 分钟,如果您想查看原始 json,我可以生成一个新链接。

http://api.statcounter.com/stats/?vn=3&s=visitor&pi=2292634&t=1398791335&u=demo_user&sha1=c6cdfd6c84227801c6ca758c17252712e3f76514

{"@attributes":{"status":"ok"},"sc_data":[{"log_visits":"1","entries_in_visit":"2","entry_t":"2014-04-29 17:57:33","entry_url":"http:\/\/www.guitar-online.com\/en\/","entry_title":"Learn how to play the guitar: tutorials, guitar 

显然我没有以正确的方式访问数组...但我还没有找到使它工作的语法!

感谢您的帮助。

【问题讨论】:

    标签: php file-get-contents json


    【解决方案1】:

    查看您的数据,sc_data 是一个包含嵌套 JSON 对象的数组,因此您应该能够遍历该数组以按需要读取数据:

    echo $data['sc_data'][0]['log_visits'];
    

    上面的代码将访问数组sc_data的第一个元素并打印log_visits的值

    当您在 JSON 中具有 {"field":['a','b','c']} 时,您将访问 'a' 作为 field[0]

    数组的元素可以是任何有效值,即

    • 字符串
    • 号码
    • 对象
    • 数组
    • 是的

    在您的情况下,它是对象,您访问该对象的方式与访问任何其他数组元素的方式相同 - 通过索引号(JSON 没有 "key" =&gt; "value" 类型的关联数组)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-12-23
      • 2011-07-09
      • 2015-03-11
      • 1970-01-01
      • 1970-01-01
      • 2014-09-29
      • 2012-01-17
      相关资源
      最近更新 更多