通过相对路径

时间:2015-06-08 14:15:31

标签: php arrays json multidimensional-array

我试图在我的网站上使用一些JSON数据,但是在尝试阅读时我遇到了问题。

获取数据效果很好:



<?php
$data = json_decode(file_get_contents('http://ddragon.leagueoflegends.com/cdn/5.2.1/data/en_US/champion.json'));
?>
&#13;
&#13;
&#13;

这是JSON数据的一些摘录,但它可以解释问题

&#13;
&#13;
{
    "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;
&#13;
&#13;

问题:如何在不知道&#39;标题的情况下访问&#34; key&#34;的价值? (例如&#34; Aatrox&#34;)? 我尝试了 $ data-&gt; {&#39;数据&#39;} [0] - &gt; {&#39; key&#39;} ,但这不起作用。

第二个问题:我也尝试搜索&#34; key&#34;的值,但是在PHP中使用此方法构建路径没有成功。尝试使用JavaScript运行良好,但我更愿意使用服务器端解决方案。 谢谢你的帮助!

3 个答案:

答案 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'];
}

这会回显你的钥匙。