将数据库表数据拆分为基于ID的不同数组

时间:2018-01-22 09:24:42

标签: php mysql arrays codeigniter

我有下表

Vehicle_id   lat    long
A11         25.45   98.01
A11         26.45   98.02
B12         25.75   98.03
A11         25.25   98.04
B12         27.45   98.05
A11         25.35   98.06
C11         28.45   98.07

我的代码: -

控制器代码:

public function get_location_data(){ 
    $data = $this->location_modal->get_location(); 
    $final = []; 
    /*foreach($data as $value){ 
        $final[$value['vehicle_id']] [] = $value; 
    }*/ 
    echo json_encode($data); 
} 

模态代码:

function get_location() { 
    $this->db->select('*'); 
    $this->db->from('gps_data'); 
    $result = $this->db->get(); 
    return $result->result(); 
}

我希望从基于vehicle_id的不同数组中的表中获取此数据,并将它们全部推送到json_encode中。我该如何做到这一点。是否可以构造一个可以执行此操作的查询,或者我是否必须为数组中的单个vehicle_id存储执行此操作,然后将其添加到json编码。请帮我解决一下。

1 个答案:

答案 0 :(得分:1)

假设你循环遍历表行:

$vehicles = [];
while($row = $db->fetch_assoc())
{
    $vehicles[$row['Vehicle_id']][]=$row;
}

您可以Vehicle_id作为$vehicles的数组键,并将行添加到其中。

这将导致这个json:

{
  "A11": [
    {
      "Vehicle_id": "A11",
      "lat": 25.45,
      "long": 98.01
    },
    {
      "Vehicle_id": "A11",
      "lat": 26.45,
      "long": 98.02
    },
    ...
  ],
  "B12": [
    {
      "Vehicle_id": "A11",
      "lat": 25.75,
      "long": 98.03
    },
    ...
  ]
}

<强>阐释:

语法$a[] = 11附加到数组$a,从而导致:

[
    0=>1
]

$a['b'][] = 1会附加到数组b中键$a处的数组,从而导致:

[
    'b'=>[0=>1]
]