通过相对路径浏览多维PHP数组



我想在我的网站上使用一些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'];
}

相关内容

  • 没有找到相关文章

最新更新