json_decode()获取值

时间:2014-04-29 17:16:02

标签: php file-get-contents json

我正在尝试从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 

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

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

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

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

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

如果您使用JSON {"field":['a','b','c']},则可以'a'访问field[0]

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

  • 字符串
  • 物体
  • 阵列

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