2013-11-18 7 views
1

Я работаю над источником json с wunderground.com. Как пример кода, отображаемого в документе. Я могу настроить и проработать в каком-то простом формате. Но я застрял с этим. Я старался изо всех сил, но решения нет.Как добраться до wunderground .json

Вот выборочные коды:

<?php 
    $json_string = file_get_contents("http://api.wunderground.com/api/b8e924a8f008b81e/geolookup/conditions/q/IA/Cedar_Rapids.json"); 
    $parsed_json = json_decode($json_string); 
    $location = $parsed_json->{'location'}->{'city'}; 
    $temp_f = $parsed_json->{'current_observation'}->{'temp_f'}; 
    echo "Current temperature in ${location} is: ${temp_f}\n"; 
?> 

Ну, мне нужна информация, как "Cedar Rapids" из PWS/станции:

"pws": { 
     "station": [ 
     { 
     "neighborhood":"Ellis Park Time Check", 
     "city":"Cedar Rapids", 
     "state":"IA", 
     "country":"US", 
     "id":"KIACEDAR22", 
     "lat":41.981174, 
     "lon":-91.682632, 
     "distance_km":2, 
     "distance_mi":1 
     } 
] 
} 

(Вы можете получить весь код нажав на это: http://api.wunderground.com/api/b8e924a8f008b81e/geolookup/conditions/q/IA/Cedar_Rapids.json) Теперь вопросы:

  1. Что называют эти данные? (массив, массив в массиве?)
  2. Как я мог вытащить эти данные из строки?

Привет,

ответ

1

station является массивом в пределах pws объекта.

Чтобы получить данные, вы можете сделать что-то вроде этого:

<?php 
    $json_string = file_get_contents("http://api.wunderground.com/api/b8e924a8f008b81e/geolookup/conditions/q/IA/Cedar_Rapids.json"); 
    $parsed_json = json_decode($json_string); 
    $location = $parsed_json->{'location'}->{'city'}; 
    $temp_f = $parsed_json->{'current_observation'}->{'temp_f'}; 
    echo "Current temperature in ${location} is: ${temp_f}\n"; 

    $stations = $parsed_json->{'location'}->{'nearby_weather_stations'}->{'pws'}->{'station'}; 
    $count = count($stations); 
    for($i = 0; $i < $count; $i++) 
    { 
    $station = $stations[$i]; 
    if (strcmp($station->{'id'}, "KIACEDAR22") == 0) 
    { 
     echo "Neighborhood: " . $station->{'neighborhood'} . "\n"; 
     echo "City: " . $station->{'city'} . "\n"; 
     echo "State: " . $station->{'state'} . "\n"; 
     echo "Latitude: " . $station->{'lat'} . "\n"; 
     echo "Longitude: " . $station->{'lon'} . "\n"; 
     break; 
    } 
    } 
?> 

Выход:

Current temperature in Cedar Rapids is: 38.5 
Neighborhood: Ellis Park Time Check 
City: Cedar Rapids 
State: IA 
Latitude: 41.981174 
Longitude: -91.682632 
Смежные вопросы