2016-11-10 1 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 
    ) 
    .... 
    ) 

я получаю много ошибок (извещений): Массив для преобразования строки, Undefined смещение: 0 , Неопределенное смещение: 1 ...

Кто-нибудь знает решение?

Заранее благодарен!

ответ

0

Я думаю, что нашел.

Возможно, не лучший код, но он работает.

$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; 
     }  
} 

дает мне результат:

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