2011-12-16 2 views
3

저는 JSON을 처음 사용하고 구문 분석합니다. Google Elevation API에서 고도를 요청할 때 다음과 같은 결과가 표시됩니다.구문 분석 PHP를 사용한 Google 고도의 결과

{ 
    "status": "OK", 
    "results": [ { 
    "location": { 
     "lat": 39.7391536, 
     "lng": -104.9847034 
    }, 
    "elevation": 1608.8402100 
    } ] 
} 

구문 분석 할 때 json_decode 결과를 사용하여 높이를 효과적으로 참조하는 방법을 알지 못합니다. 내 요약 코드는 다음과 같습니다.

$json_string = file_get_contents($url); 
$parsed_json = json_decode($json_string); 
$geoElevation = $parsed_json->{'elevation'}; 

위의 코드를 사용하여 "고도"값에 액세스 할 수없는 이유는 누구나 알 수 있습니까?

답변

3

당신은 당신의 데이터 구조의 더 나은 시각화를 얻을 수 print_r($parsed_json)을 사용해야합니다

$parsed_json 
(
    [status] => OK 
    [results] => Array 
     (
      [0] => Array 
       (
        [location] => Array 
         (
          [lat] => 39.739153600000001631542545510456 
          [lng] => -104.98470340000000078362063504755 
         )  
        [elevation] => 1608.8402100000000700674718245864 
       ) 
     ) 
) 

이는 json_decode($json_string, TRUE);를 사용하여 얻을 수있는 배열입니다. 따라서 항목을 쉽게 트래버스 할 수 있습니다. 귀하의 경우에는

은 당신이 원하는 :

print $parsed_json["results"][0]["elevation"]; 

는 일반적으로 당신은 숫자 수준 이상 foreach하려는 것입니다. 그러나 하나의 결과 만 기대한다면 [0]은 완벽하게 사용하면 좋습니다. 당신이 배열을 사용하여 선호하는 경우

$json_string = file_get_contents($url); 
$parsed_json = json_decode($json_string); 

echo $parsed_json->results[0]->elevation; 

또는 :

+0

감사합니다. 그래서 나는 그것을 잘못 참조하고있다. 내가 사용하고있는 다른 방법보다는 Array로 구문 분석해야합니까? – user1077894

+0

아니요, 할 필요가 없습니다. 그러나 종종 더 쉽게 만듭니다. - 구문에 대한 답변 BOZs를 참조하십시오. 구조는 동일하게 유지됩니다. – mario

4

이 시도

$json_string = file_get_contents($url); 
$parsed_json = json_decode($json_string, TRUE); 

echo $parsed_json['results'][0]['elevation']; 

두 번째 인수를 :

언제 TRUE, 객체가 연관 배열로 변환됩니다 돌아왔다. json_encode 매뉴얼

+2

나는 배열 하나를 좋아하고 조작하기 쉽다. – zackaryka

관련 문제