如何使用PHP复制特定的JSON文档

如何使用PHP复制特定的JSON文档,php,mysql,json,Php,Mysql,Json,我已经努力解决我的问题好几天了,但没有得到预期的结果。以下是JSON文件的特定结构: { "detections": { "timestamp": "12/04/2016/ 20:25:00", "rooms": [ { "name": "r1", "sensors": [ { "id": 10, "type": "rad",

我已经努力解决我的问题好几天了,但没有得到预期的结果。以下是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"
        }
    }
}] 
}
相似但不相同的:/

正如我从JSON结构中注意到的,具有相同时间戳但具有不同房间、传感器和值的检测被收集在一起。。。但我不知道如何认识到这一点


希望你们能帮我一把,谢谢>你们为了达到那个结构而构建的阵列是错误的

要实现所需的结构,阵列需要如下所示

<?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,
          ),
        ),
      ),
    ),
  ),
);

为了实现该结构,您构建的阵列是错误的

要实现所需的结构,阵列需要如下所示

<?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,
          ),
        ),
      ),
    ),
  ),
);

谢谢,我会用你的提示调整我的代码:)谢谢,我会用你的提示调整我的代码:)