很抱歉又发生了这样的事情。
json以以下格式返回:
{
"data":{
"internalName":"hotshotgg",
"name":"HotshotGG",
"acctId":434582,
"profileIconId":531,
"revisionDate":"'/Date(1357002079809)'/",
"summonerLevel":30,
"summonerId":407750
},
"success":true
}
也可以在这里看到:http://elophant.com/developers/docs/summoner
数据返回正确:
Array (
[data] => Array (
[internalName] => nemonorm
[name] => nemonorm
[acctId] => 28685607
[profileIconId] => 544
[revisionDate] => /Date(1361354064000)/
[summonerLevel] => 30
[summonerId] => 24286314
)
[success] => 1
)
我似乎无法循环浏览并打印出我想要的信息:
$decode= json_decode($url, true);
foreach($decode['data'] as $key => $value) {
echo $value['name'] . " <br />";
}
很确定这是显而易见的。。。但是我看不见。
您必须首先获取URL的内容,例如使用curl:
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$json = curl_exec($ch);
$decode = json_decode($json, true);
最重要的是,你似乎预料到了错误的数据结构。如果你想回显data.name
,那么你必须访问它。如果你想回显所有的数据,那么你需要循环。
// echo the name only:
echo $decode['data']['name'];
// echo all data
foreach($decode['data'] as $key => $value) {
echo $key . ": " . $value . "<br />";
}
您的数组不够深。您拥有的是:
Array (
[data] => Array (
[internalName] => nemonorm
...
) [success] => 1
)
当你循环$decoded〔'data〕时,你得到的值是单独的变量,而不是数组。我的意思是$value是一个字符串,而不是数组,所以$value['name']是没有意义的。你需要的是:
Array (
[data] => Array (
[0] => Array (
[internalName] => nemonorm
...
)
) [success] => 1
)
然后,您将遍历一个结果数组,而不是单个结果的值。
很难用我们所掌握的信息来判断,但$url是url的内容,还是只是实际的url?您需要先获取内容,然后再对其调用json_decode。
类似于:
$json = file_get_contents($url);
$decoded = json_decode($json, true);
尝试查看cURLhttp://php.net/manual/en/book.curl.php用于获得URL的内容的另一种方法。