我想在我的网站上使用一些JSON数据,但我在试图读取时卡住了。
获取数据工作良好:
<?php
$data = json_decode(file_get_contents('http://ddragon.leagueoflegends.com/cdn/5.2.1/data/en_US/champion.json'));
?>
这是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
},
},
}
}
问题:如何在不知道"标题"的情况下访问"key"的值(例如:"Aatrox")?我试着数据->{‘数据’}[0]->{"关键"},但这并不工作。
第二个问题:我也尝试过搜索"key"的值,但是在PHP中没有成功地使用这个方法构建路径。尝试使用JavaScript工作得很好,但我更喜欢使用服务器端解决方案。谢谢你的帮助!
如果你想让一个元素处于特定的'offset'位置,使用
array_values($data->data)[0]->key;
否则,使用foreach:
foreach ($data->data as $heading=>$data) {
echo "The heading is $heading and key is {$data->key}";
}
另一种很短的方式:
<?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
我个人更喜欢将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'];
}