2016-09-12 3 views
1

Я пытался решить свою проблему в течение нескольких дней, но не получая желаемого результата. Вот конкретная структура файла JSON:Как воспроизвести с PHP конкретный документ JSON

{ 
    "detections": { 
    "timestamp": "12/04/2016/ 20:25:00", 
    "rooms": [ 
     { 
     "name": "r1", 
     "sensors": [ 
       { 
       "id": 10, 
       "type": "rad", 
       "value": 100, 
       "valMax": 600, 
       "valMin": 100 
       }, 
       { 
       "id": 12, 
       "type": "temp", 
       "value": 30.5, 
       "valMax": 1000, 
       "valMin": 0 
       } 
      ] 
     }, 
    { 
     "name": "r2", 
     "sensors": [ 
      { 
       "id": 20, 
       "type": "temp", 
       "value": 20.7, 
       "valMax": 1000, 
       "valMin": 0 
      }, 
      { 
       "id": 15, 
       "type": "rad", 
       "value": 800, 
       "valMax": 600, 
       "valMin": 100 
      } 
     ] 
     } 
    ] 
} 
} 

Я должен кодировать с этой структурой данных, которые я извлеченной из базы данных MySQL. Он состоит из трех таблиц, связанных с ограничениями внешнего ключа. Теперь код, который я написал для этого является следующее:

while($row = mysqli_fetch_array($result)) { 
    array_push($detections, array("timestamp"=>$row['timestamp'], 
         "rooms"=>array("name"=>$row['name'], 
         "sensors"=>array("id"=>$row['id'], "type"=>$row['type'], "value"=>$row['value'], "valMin"=>$row['valMin'], 
         "valMax"=>$row['valMax'])) 
       )); 
} 

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

{ 
    "detections": [{ 
    "timestamp": "2016-09-10 17:59:06", 
    "rooms": { 
     "name": "Stanza dei Giochi", 
     "sensors": { 
      "id": "1", 
      "type": "prova2", 
      "value": "12", 
      "valMin": "1", 
      "valMax": "12" 
     } 
    } 
}, { 
    "timestamp": "2016-09-11 00:41:21", 
    "rooms": { 
     "name": "Stanza dei Giochi", 
     "sensors": { 
      "id": "1", 
      "type": "prova2", 
      "value": "21", 
      "valMin": "1", 
      "valMax": "12" 
     } 
    } 
}, { 
    "timestamp": "2016-09-10 19:59:20", 
    "rooms": { 
     "name": "Stanza dei Giochi", 
     "sensors": { 
      "id": "3", 
      "type": "prova", 
      "value": "13", 
      "valMin": "11", 
      "valMax": "13" 
     } 
    } 
}, { 
    "timestamp": "2016-09-11 00:41:21", 
    "rooms": { 
     "name": "Stanza dei Giochi", 
     "sensors": { 
      "id": "3", 
      "type": "prova", 
      "value": "23.5", 
      "valMin": "11", 
      "valMax": "13" 
     } 
    } 
}] 
} 

, который похож, но не то же самое:/

В I «Я заметил, что из структуры JSON, которую я получил, обнаружения с той же меткой времени, но с разными комнатами, датчиками и ценностями собираются вместе ... но я не знаю, как это реализовать.

Надежда y'all может дать мне руку, спасибо>. <

ответ

0

Вы строите свой массив неправильно для достижения этой структуры.

Для достижения желаемой структуры вашего массива должен выглядеть следующим образом

<?php 
array (
    'detections' => 
    array (
    'timestamp' => '12/04/2016/ 20:25:00', 
    'rooms' => 
    array (
     0 => 
     array (
     'name' => 'r1', 
     'sensors' => 
     array (
      0 => 
      array (
      'id' => 10, 
      'type' => 'rad', 
      'value' => 100, 
      'valMax' => 600, 
      'valMin' => 100, 
     ), 
      1 => 
      array (
      'id' => 12, 
      'type' => 'temp', 
      'value' => 30.5, 
      'valMax' => 1000, 
      'valMin' => 0, 
     ), 
     ), 
    ), 
     1 => 
     array (
     'name' => 'r2', 
     'sensors' => 
     array (
      0 => 
      array (
      'id' => 20, 
      'type' => 'temp', 
      'value' => 20.699999999999999, 
      'valMax' => 1000, 
      'valMin' => 0, 
     ), 
      1 => 
      array (
      'id' => 15, 
      'type' => 'rad', 
      'value' => 800, 
      'valMax' => 600, 
      'valMin' => 100, 
     ), 
     ), 
    ), 
    ), 
), 
); 

Проверьте также проверить json_decode и json_encode

+0

Спасибо, я постараюсь, чтобы настроить свой код с кончиком :) – IseyZ

Смежные вопросы