我试图在我的网站上使用一些JSON数据,但是在尝试阅读时我遇到了问题。
获取数据效果很好:
<?php
$data = json_decode(file_get_contents('http://ddragon.leagueoflegends.com/cdn/5.2.1/data/en_US/champion.json'));
?>
&#13;
这是JSON数据的一些摘录,但它可以解释问题
{
"type": "champion",
"format": "standAloneComplex",
"version": "5.10.1",
"data": {
"Aatrox": {
"version": "5.10.1",
"id": "Aatrox",
"key": "266",
"name": "Aatrox",
"title": "Die Klinge der Düsteren",
"info": {
"attack": 8,
"defense": 4,
"magic": 3,
"difficulty": 4
},
},
"Ahri": {
"version": "5.10.1",
"id": "Ahri",
"key": "103",
"name": "Ahri",
"title": "Die neunschwänzige Füchsin",
"info": {
"attack": 3,
"defense": 4,
"magic": 8,
"difficulty": 5
},
},
}
}
&#13;
问题:如何在不知道&#39;标题的情况下访问&#34; key&#34;的价值? (例如&#34; Aatrox&#34;)? 我尝试了 $ data-&gt; {&#39;数据&#39;} [0] - &gt; {&#39; key&#39;} ,但这不起作用。
第二个问题:我也尝试搜索&#34; key&#34;的值,但是在PHP中使用此方法构建路径没有成功。尝试使用JavaScript运行良好,但我更愿意使用服务器端解决方案。 谢谢你的帮助!
答案 0 :(得分:0)
如果您想要一个特定'偏移'的元素,请使用
array_values($data->data)[0]->key;
否则,请使用foreach:
foreach ($data->data as $heading=>$data) {
echo "The heading is $heading and key is {$data->key}";
}
答案 1 :(得分:0)
替代方式很短:
<?php
$data = json_decode(file_get_contents('http://ddragon.leagueoflegends.com/cdn/5.2.1/data/en_US/champion.json'), true);
$first = current($data['data']);
更完整的例子:
<?php
$data = json_decode(file_get_contents('http://ddragon.leagueoflegends.com/cdn/5.2.1/data/en_US/champion.json'));
$key = current($data->data)->key
答案 2 :(得分:-1)
我个人更喜欢将JSON对象转换为更友好的PHP阵列。
如果您使用json_decode(file_get_contents('http://ddragon.leagueoflegends.com/cdn/5.2.1/data/en_US/champion.json')));
您将能够使用类似
$champions = json_decode(file_get_contents('http://ddragon.leagueoflegends.com/cdn/5.2.1/data/en_US/champion.json')));
foreach($champions['data'] as $key => $row){
echo $row['key'];
}
这会回显你的钥匙。