对另外一个感到抱歉。
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 />";
}
很确定这是显而易见的......但是我看不到它。
答案 0 :(得分:3)
您必须首先获取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 />";
}
答案 1 :(得分:1)
你的阵列不够深。你拥有的是:
Array (
[data] => Array (
[internalName] => nemonorm
...
) [success] => 1
)
当您遍历$ decoding ['data']时,您获得的值是单个变量,而不是数组。我的意思是$ value是一个字符串,而不是一个数组,所以$ value ['name']毫无意义。你需要的是:
Array (
[data] => Array (
[0] => Array (
[internalName] => nemonorm
...
)
) [success] => 1
)
然后,您将遍历一系列结果,而不是单个结果的值。
答案 2 :(得分:0)
很难用我们掌握的信息来判断,但是URL的内容是$ url,还是只是实际的URL?在调用json_decode之前,首先需要获取内容。
类似的东西:
$json = file_get_contents($url);
$decoded = json_decode($json, true);
尝试查看cURL http://php.net/manual/en/book.curl.php以获取另一种获取网址内容的方法。