2016-11-10 5 views
0

XML 파일을 읽고 출력 배열에서 값을 가져 오려고합니다.JSON 및 Simple XML을 사용하여 배열 구조 빌드에서 연관 배열 만들기

$xml = simplexml_load_file('http://www.xyz.be/meteo'); 
$json_string = json_encode($xml); 
$result_array = json_decode($json_string, TRUE); 

출력 배열 구조는 다음과 같습니다 :

Array 
(
[STATION] => Array 
    (
     [0] => Array 
      (
       [@attributes] => Array 
        (
         [ID] => 6407 
         [NAME] => Kust 
        ) 

       [DAY] => Array 
        (
         [0] => Array 
          (
           [@attributes] => Array 
            (
             [ID] => 20161110 
            ) 

           [TMAX] => 10 
           [WEATHER] => 11 
           [DD] => NW 
           [FF] => 25 
          ) 

         [1] => Array 
          (
           [@attributes] => Array 
            (
             [ID] => 20161111 
            ) 

           [TMAX] => 8 
           [WEATHER] => 2 
           [DD] => ZO 
           [FF] => 8 
          ) 

        ) 

      ) 


     [1] => Array 
      (
       [@attributes] => Array 
        (
         [ID] => 6479 
         [NAME] => Kempen 
        ) 

       [DAY] => Array 
        (
         [0] => Array 
          (
           [@attributes] => Array 
            (
             [ID] => 20161110 
            ) 

           [TMAX] => 9 
           [WEATHER] => 6 
           [DD] => ZW 
           [FF] => 11 
          ) 

         [1] => Array 
          (
           [@attributes] => Array 
            (
             [ID] => 20161111 
            ) 

           [TMAX] => 5 
           [WEATHER] => 3 
           [DD] => NO 
           [FF] => 6 
          ) 

        ) 

      ) 

     [2] => Array 
      (
       [@attributes] => Array 
        (
         [ID] => 6476 
         [NAME] => Ardennen 
        ) 

       [DAY] => Array 
        (
         ... 

내가 reayly 많은 것들을 시도했지만 내가 적합한 솔루션을 찾을 수없는이 배열을 작성하는 코드입니다.

는 ** 질문 ** 이 같은 연관 배열에 모두 함께 넣을 수 있습니다 방법 :

Array (
    [0] => Array 
     (
     ['STAT_INDEX '] => 0 
     ['STAT_ID'] => 6407 
     ['STAT_NAME'] => Kust 
     ['DAY_INDEX'] => 0 
     ['DAY_DATE'] => 20161110 
     ['DAY_TMAX'] => 10 
     ['DAY_WEATHER'] => 11 
     ['DAY_DD '] => NW 
     ['DAY_FF '] => 25 
    ) 

    [1] => Array 
    (
     ['STAT_INDEX '] => 0 
     ['STAT_ID'] => 6407 
     ['STAT_NAME'] => Kust 
     ['DAY_INDEX'] => 1 
     ['DAY_DATE'] => 20161111 
     ['DAY_TMAX'] => 8 
     ['DAY_WEATHER'] => 2 
     ['DAY_DD '] => ZO 
     ['DAY_FF '] => 8 
    ) 
    [2] => Array 
    (
     ['STAT_INDEX '] => 0 
     ['STAT_ID'] => 6451 
     ['STAT_NAME'] => Centrum 
     ['DAY_INDEX'] => 0 
     ['DAY_DATE'] => 20161110 
     ['DAY_TMAX'] => 10 
     ['DAY_WEATHER'] => 11 
     ['DAY_DD '] => W 
     ['DAY_FF '] => 16 
    ) 
    .... 
    ) 

가 나는 오류의 많은 (공지 사항) 얻을 : 문자열 변환에 배열, 정의되지 않은 오프셋 : 0 , 정의되지 않은 오프셋 : 1 ...

해결책을 아는 사람이 있습니까?

미리 감사드립니다.

답변

0

나는 그것을 발견했다고 생각한다.

아마도 최고의 코드는 아니지만 작동합니다.

Array 
(
[0] => Array 
    (
     [ID] => 6407 
     [NAME] => Kust 
     [DATUM] => 20161110 
     [DAG] => 1 
     [TMAX] => 10 
     [WEATHER] => 11 
     [DD] => NW 
     [FF] => 25 
    ) 

[1] => Array 
    (
     [ID] => 6407 
     [NAME] => Kust 
     [DATUM] => 20161111 
     [DAG] => 2 
     [TMAX] => 8 
     [WEATHER] => 2 
     [DD] => ZO 
     [FF] => 8 
    ) 

[2] => Array 
    (
     [ID] => 6451 
:
$data = array(); 
$i = 0; 

foreach($result_array['STATION'] as $station) { 
    $dag = 1; 
     foreach($station['DAY'] as $day) { 
      $data[$i]['ID'] = $station['@attributes']['ID']; 
      $data[$i]['NAME'] = $station['@attributes']['NAME']; 
      $data[$i]['DATUM'] = $day['@attributes']['ID']; 
      $data[$i]['DAG'] = $dag; 
      $data[$i]['TMAX'] = $day['TMAX']; 
      $data[$i]['WEATHER'] = $day['WEATHER']; 
      $data[$i]['DD'] = $day['DD']; 
      $data[$i]['FF'] = $day['FF']; 
      $i += 1; 
      $dag += 1; 
     }  
} 

는 나에게 결과를 제공