2015-06-08 5 views
0

Я пытаюсь использовать некоторые данные JSON на своем веб-сайте, но я застрял во время чтения.перемещаться по многомерному массиву PHP по относительному пути

Получение данных хорошо работает:

<?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 
 
      }, 
 
     }, 
 
    } 
 
}

Вопрос: Как возможно, получить доступ к значению «ключ», не зная «заголовок» (например, «Аатрокс»)? Я пробовал $ data -> {'data'} [0] -> {'key'}, но это не работает.

Второй вопрос: Я также попытался найти значение «ключа», но не смог добиться успеха в построении пути с помощью этого метода в PHP. Попробуйте с JavaScript работал хорошо, но я бы предпочел иметь серверное решение. Спасибо за помощь!

+2

Петля через '$ data-> данные как $ ключ => $ value', пока вы не найдете нужный вам элемент. – deceze

+0

'foreach ($ array as $ key => $ value)', в основном. –

+0

Как вы думаете, чтобы отличить Aatrox.key и Ahri.key? или вы интересны во всех смыслах – splash58

ответ

0

Если вы хотите, чтобы элемент в частности, 'смещение', используйте

array_values($data->data)[0]->key; 

иначе, использование Еогеасп:

foreach ($data->data as $heading=>$data) { 
    echo "The heading is $heading and key is {$data->key}"; 
} 
-1

Лично я предпочитаю, чтобы преобразовать объект JSON в PHP Дополнительные дружеский Array.

Если вы используете 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']; 
} 

Это эха ключи.

0

Alternative очень короткий путь:

<?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 
Смежные вопросы