【问题标题】:split database table data into different array base on ID根据ID将数据库表数据拆分为不同的数组
【发布时间】:2018-01-22 09:24:42
【问题描述】:

我有下表

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编码中。请帮我解决问题。

【问题讨论】:

  • Select * from <table> 然后当您获取记录时:- $final = []; while($row = mysqli_fetch_assoc($result)){$final[$row['Vehicle_id']][] = $row;} echo json_encode($final);。就是这样
  • 对不起,我忘了说我正在使用 CodeIgniter。如何在codeigniter中做到这一点
  • 您的解决方案适用于自定义 php,但我使用的是 ci 框架。
  • 请检查代码并帮助我。
  • 请添加您使用当前代码获得的结果。在$data = $this->location_modal->get_location(); 之后执行var_dump($data); 并展示你得到了什么。还要添加您需要的内容作为最终输出。

标签: php mysql arrays codeigniter


【解决方案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]
]

【讨论】:

  • 我在 Codeigniter 中做,请解释一下。
  • 对数组的分配工作相同,Codeigniter 与否。在您当前的代码中,foreach 被注释掉,返回值为 $data。您可以评论循环并将返回更改为 $final 吗?那放出来的json是什么?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-06-17
  • 1970-01-01
  • 2011-06-15
  • 2015-08-09
  • 2020-04-23
  • 1970-01-01
  • 2017-08-13
相关资源
最近更新 更多