2012-06-18 2 views
1

Я пытаюсь запросить и проанализировать данные о спортивных фантастиках Yahoo и показать результаты в дружественном формате.PHP и JSON с использованием Yahoo Fantasy Sports API

Вот JSON я вернусь с Yahoo от успешного запроса ...

{ 
"fantasy_content": { 
"xml:lang": "en-US", 
"yahoo:uri": "\/fantasy\/v2\/users;use_login=1\/teams", 
"users": { 
    "0": { 
    "user": [ 
     { 
     "guid": "1234567890" 
     }, 
     { 
     "teams": { 
      "0": { 
      "team": { 
       "team_key": "268.l.auto.t.209996", 
       "team_id": "209996", 
       "name": "Team Test", 
       "type": "auto" 
      } 
      }, 
      "1": { 
      "team": { 
       "team_key": "273.l.auto.t.27741", 
       "team_id": "27741", 
       "name": "Team API", 
       "type": "auto" 
      } 
      }, 
      "count": 2 
     } 
     } 
    ] 
    }, 
    "count": 1 
}, 
"time": "29.808044433594ms", 
"copyright": "Data provided by Yahoo! and STATS, LLC", 
"refresh_rate": false 
    } 
} 

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

$obj=json_decode($json); 
$data = $obj->fantasy_content->users->user->teams->team; 
foreach($data as $d){ 
echo 'name: ' . $d->name ; //prints php 
} 

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

Заранее благодарен!

+0

Это может быть столь же легко, как '$ данных = $ obj-> fantasy_content-> Пользователи [ 0] -> user-> teams-> team; '(для первой записи) –

+0

Высказывания и ошибки« Нельзя использовать объект типа stdClass as array ». – joeyd

+0

что такое api? – Rajneesh071

ответ

0

Попробуйте

$obj=json_decode($json); 
$data = $obj->fantasy_content->users->{'0'}->user[1]->teams; 
foreach($data as $d){ 
    echo 'name: ' . $d->team->name ; //prints php 
} 

EDIT вы можете использовать COUT Переберите имена

$obj=json_decode($json); 
$data = $obj->fantasy_content->users->{'0'}->user[1]->teams; 
for($i = 0; $i < $data->count; $i++){ 
    echo 'name: ' . $data->{$i}->team->name ; //prints php 
} 
+0

Пригвожден! Большое спасибо! – joeyd

+0

Хм ... похоже, что «счет» добавляет дополнительный цикл. Результаты возвращаются с дополнительным именем команды, таким как ... »name: Team Test, имя: Team API, имя:». Кажется, это связано с «счетом» на том же уровне. – joeyd

+0

@joeyd см. Редактировать – Musa

Смежные вопросы