2017-11-23 23 views
-1

Ich habe eine JSON-Antwort von einer API und ich möchte einige Daten.PHP-Objekt Zugriff von JSON

die Antwort wie folgt aussieht:

{ 
"user_id": null, 
"flight_info": { 
     "YU24268": { 
    "seat": { 
     "width": 45.72, 
     "pitch": 73.66 
    }, 
    "delay": { 
     "ontime_percent": 0.66666669, 
     "max": 53, 
     "mean": 37, 
     "min": 28 
    } 
    }, 
    "delay": { 
     "ontime_percent": 0.67741936, 
     "max": 305, 
     "mean": 33, 
     "min": 0 
    } 
    } 
}, 
"travelpayouts_api_request": true, 
"clean_marker": "75089", 
"currency": "usd", 
"internal": false, 
"airports": { 
    "ORY": { 
    "rates": "12", 
    "city_code": "PAR", 
    "country_code": "FR", 
    "country": "France", 
    "time_zone": "Europe/Paris", 
    "name": "Paris Orly Airport", 
    "city": "Paris" 
    }, 
    "SXF": { 
    "rates": "27", 
    "city_code": "BER", 
    "country_code": "DE", 
    "country": "Germany", 
    "time_zone": "Europe/Berlin", 
    "name": "Schonefeld Airport", 
    "city": "Berlin" 
    } 
} 

Ich benutze diesen Code, um den Flughafen i (von dem IATA-Code) Nötige zu finden, aber ich kann nicht die Stadt bekommen.

Wie kann ich den Namen der Stadt basierend auf dem Flughafen IATA bekommen? (iata ist der Drei-Buchstaben-Code-Schlüssel, den Flughäfen haben Objekte).

+0

Sie müssen nicht verwenden 'json_decode', ist es bereits dekodiert. Du solltest nur '$ value-> city' verwenden. – Phil

Antwort

1

Etwas wie folgt aus:

$airport_code = 'ORY'; 

// $my_irpost_string is your json string 
$data = json_decode($my_json_string, true); 
$city = $data['airports'][$airport_code]['city']; 

print($city); 

Sie brauchen nicht foreach, wie Sie bereits wissen, den Code. Dies bedeutet, dass Ihr foreach + Vergleich nur Array-Wert @ Code ist.

Dies ist ein bekannter Antipattern: https://softwareengineering.stackexchange.com/questions/348682/what-is-the-for-case-antipattern

+1

Viel besser als die ganze Sammlung zu durchlaufen :) – Phil

+0

So oft im echten Produktionscode gesehen ... :) –