2015-01-05 3 views
1

Im는 json에게 새로운 것이므로 어쩌면 정말 간단한 질문을해야합니다. 검색을 시도했지만 아무 것도 찾지 못했습니다. json에서 API를 호출하고 데이터를 받았습니다. 그리고 지금 내 문제는 내 PHP를 통해 구문 분석, "아무것도 찾을 수 없습니다." 내 코드는 다음과 같습니다URL에서 PHP에서 json을 구문 분석하는 방법

$opts = array(
    'http'=>array(
    'method'=>"GET", 
    'header'=>"Accept: application/vnd.travify.v1+json\r\n" 
    ) 
); 

$context = stream_context_create($opts); 
$url = 'http://oda.ft.dk/api/Sag?$select=titel,Sagskategori/kategori&$expand=Sagskategori'; 
$output = file_get_contents($url, false, $context); 

$string = file_get_contents($url, false, $context); 
$result = json_decode($string, true); 

$i = -1; 

foreach ($result as $data) { 
    $i++; 
    echo "#"; 
    echo $i; 
    echo "<br>"; 
    echo "<b>Test 1:</b>"; 
    echo "<br>"; 
    if(!empty($result[$i]['value']['Sagskategori']['kategori'])){ 
     echo $result[$i]['value']['Sagskategori']['kategori']; 
    }else{ 
     echo "Intet fundet."; 
    } 
    echo "<hr>"; 
} 

json으로 코드는 여기에서 찾을 수 있습니다 http://oda.ft.dk/api/Sag?$select=titel,Sagskategori/kategori&$expand=Sagskategori

당신의 사람이 내 코드에 실패, 날이 올바른 방법에 얻을 볼 수 있습니다 :-)?

+0

빠른 쪽지 -'$ i'를'-1'로 초기화 한 다음, 당신의'foreach'에서 첫 번째로하는 것이'0'입니까? 그것은 부분적으로 논리적입니다. 왜'0'으로 초기화하고'foreach'에서 마지막 작업으로 증가시키지 않습니까? –

+0

'foreach()'루프를 수행하기 전에'var_dump ($ result)'또는'print_r ($ result)'를 해보고 결과 변수가 어떻게 보이는지보십시오. 가장 먼저 확인해야 할 것은 반복적 인 객체를 얻는 것입니다. 내 생각에, 당신은 하나의 객체를 되 찾을 것이므로 전체 루프 아이디어가 올바른 접근 방식이 아닐 수도 있습니다. JSON의 첫 번째 값은 배열이 아닙니다. * 편집 * 나는 이미이 줄을 따라 몇 가지 대답을 보았습니다. 그것들을위한 Upvotes. :) – jmbertucci

답변

1

, $ 데이터가 포함 된 데이터가 당신은 사용 $의 내가 필요하지 않습니다 $에서 모든 정보를

foreach ($result as $data) { 

에 의해

foreach ($result["value"] as $data) { 

교체 그리고 지금 당신은 당신의 가치 배열에 반복 할 수 얻을하시기 바랍니다 올바른 $ 결과 [$ i] 값

foreach ($result["value"] as $data) { 
    echo "#"; 
    echo "<br>"; 
    echo "<b>Test 1:</b>"; 
    echo "<br>"; 
    if(!empty($data['Sagskategori']['kategori'])){ 
     echo $data['Sagskategori']['kategori']; 
    }else{ 
     echo "Intet fundet."; 
    } 
    echo "<hr>"; 
} 
+0

감사합니다! - 내 하루를 구해 줬어 :-) – K3ll

1

는 JSON 이렇게 시작 :

{ 
    "odata.metadata":"...snip...","value":[ 
{ 

그래서 배열 value 내부 객체이다.

올바른 코드가 같아야

foreach ($result['value'] as $data) { 
    // snip 
    if(!empty($result['value'][$i]['Sagskategori']['kategori'])){ 
     echo $result['value'][$i]['Sagskategori']['kategori']; 
    } 

또한, 상기 루프 내부 $result['value'][$i]['Sagskategori']['kategori']; 엄격 $data['Sagskategori']['kategori'];를 사용하는 것과 동일하다.

+0

고맙습니다 .--)! 그것은 큰 도움이되었습니다! – K3ll

관련 문제