2014-07-20 3 views
-2

원격으로 변경된 json 코드를 가져와 사용자가 페이지를로드 할 때 에 데이터를 표시해야합니다. 이 코드를php에 의해 json을 읽어야합니다.

IT (에코) (JSON 출력 :

{ 
    "area 267":[ 
     "city1", 
     "city2", 
     "city3", 
     "city4", 
     "city5", 
     "city6", 
     "city7", 
     "city8", 
     "city9", 
     "city10", 
     "city11", 
     "city12", 
     "city13" 
    ], 
    "area 268":[ 
     "city14", 
     "city15", 
     "city16" 
    ], 
    "Coords":[ 
     "31.856128;34.760947", 
     "31.8166376;34.729755", 
     "31.857223;34.727432", 
     "31.843444;34.751793", 
     "31.831039;34.722577", 
     "31.831504;34.756643", 
     "31.817725;34.7223", 
     "31.815936;34.752588", 
     "31.819054;34.739162", 
     "31.824913;34.747459", 
     ";", 
     "31.813987;34.719103", 
     "31.833778;34.74009", 
     "31.815936;34.752589", 
     "31.819054;34.739163", 
     "31.824913;34.747458", 
    ], 
    "ID":"1405796061262" 
} 

좌표 라인은 모든 지역의 합이다.

내가이 같은 JSON 에코해야합니다 (PHP 출력은 내가 지역과 도시 (즉 JSON 파일에서) 알고 어차피 :

ID: 1405796061262. 
Areas: area267, area268. 

Citys of Area267: city1, city2, ... city13. (echo all cities in the area) 
Citys of Area268: city14, city15, city16. (echo all cities in the area) 

처럼해야합니다. 돕는

감사합니다 :)

편집 : WORKING 코드 첫번째

<?php 

$json_data = '{ 
    "area 267":[ 
     "city1", 
     "city2", 
     "city3", 
     "city4", 
     "city5", 
     "city6", 
     "city7", 
     "city8", 
     "city9", 
     "city10", 
     "city11", 
     "city12", 
     "city13" 
    ], 
    "area 268":[ 
     "city14", 
     "city15", 
     "city16" 
    ], 
    "ID":"1405796061262" 
}'; 

$data = json_decode($json_data); 
//var_dump($data); 
echo 'ID: '; 
echo $data->ID; 
echo '.<br>'; 
echo 'Areas: '; 

$areas = array(); 
foreach ($data as $k => $v) { 
if (strpos($k, 'ID') !== 0 && strpos($k, 'Coords') !== 0) { 
     $areas[] = $k; 
} 
} 

echo implode(', ',$areas).'.<br /><br />'; 


foreach ($areas as $k => $v) { 
     echo "Cities of ".$v.': '; 
     $cities = array(); 
     $cities = null; 
     foreach ($data->$v as $area) { 
      $cities[] = $area; 
     } 
     echo implode(', ',$cities).'.<br />'; 
} 

?> 
+0

을 작동합니다. 먼저 ID와 영역을 인쇄 한 다음 모든 영역을 반복하고 모든 영역에 대해 도시를 반복합니다 (중첩 루프). 지금까지 해봤습니까? 이 문제를 해결하기 위해 작성한 코드를 게시 할 수 있습니까? –

답변

0

당신은 당신이 쉽게 루프를 PHP 객체로를 JSON 출력을 변환 json_decode를 사용하여 정확한 필드를 얻을 수 있습니다 값. 여기

는 문서 링크입니다 : -이 같은 http://php.net/manual/en/function.json-decode.php

+0

나는 'json_decode'옵션을 알고 있지만, 필자는 그것이 필요한 방식으로 에코를하는 법을 모른다. 보여 주실 수 있어요? 덕분에 – user3857486

+0

문서를 확인했거나 그렇지 않으면 다음과 같이 사용할 수 있습니다. $ json = '{ "a": 1, "b": 2, "c": 3, "d": 4, "e": 5} '; var_dump (json_decode ($ json)); var_dump (json_decode ($ json, true)); – Sumit

0

아마 뭔가 내가 문제를 볼 수 없습니다

$data = json_decode($json_data); 

echo 'ID '.$data['ID']."<br />"; 
echo 'Areas: '; 

$areas = array(); 

foreach ($data as $k => $v) { 
    if (strpos($k, 'area ') === 0) { 
     $areas[] = $k; 
    } 
} 

echo implode(',',$areas).'.<br /><br />'; 

foreach ($areas as $area) { 
    echo "Cities of ".strtoupper($area).':'; 
    $cities = array(); 
    foreach ($data[$area] as $city) { 
     $cities[] = $city; 
    } 
    echo implode(','.$cities).'.<br />'; 
} 
+0

감사합니다 !!!! 약간의 작업 변경 :) – user3857486

관련 문제