首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何将我的结果集转换成一个分组的多维数组,然后是一个json字符串?

如何将我的结果集转换成一个分组的多维数组,然后是一个json字符串?
EN

Stack Overflow用户
提问于 2018-08-15 21:21:48
回答 1查看 53关注 0票数 0

我的数据库中有一个表,其结构和数据如下所示:

代码语言:javascript
复制
---------------------------------------------
   id   |    type      |    name   |    age
---------------------------------------------
    1        F-A           jon          24
    2        F-A           roy          25
    3        F-E           robert       26
    4        F-E           sina         25

我希望根据json值对数据进行分组,以生成一个特定的结构化数组,以生成以下type

代码语言:javascript
复制
{
  type:{
     "F-A": [
                {
                    "name": "jon",
                    "age": "24"
                    "id": "1"
                  },
                {
                    "name": "roy",
                    "age": "25",
                    "id": "2"
                }
           ],
"F-E":     [
                  {
                   "name": "robert",
                    "age": "26",
                    "id": "3"
                  },
                 {
                    "name": "sina",
                    "age": "25",
                    "id": "4"
                  },
         ]
      }
}

请注意,每个唯一类型的子数组都包含与该值关联的行数据的集合。

我的模型:

代码语言:javascript
复制
public function prescriptionData(){
    $table = 'prescription';
    $this->db->select('*');
    $this->db->from($table);
    $query=$this->db->get();
    $locations = [];
    //===   
    $val4=[];
    $this->db->select('type,name,age,id');
    $this->db->from($table);
    $query2=$this->db->get();
    Foreach($query2->result()   as  $k=>$va13){
        $val4[$k]= $va13;
    }
    foreach($query2->result_array() as $val){
        if(isset($val['type'])){
            $locations[type][$val['type']]=$val4;
        }else{
            $locations[type][$val['type']]= $val4;
        }
    }
    return $locations;        
}

我的控制器:

代码语言:javascript
复制
public function prescription(){
    $userCount['result'] = $userCount1 = $this->Querydata->prescriptionData();
    if($userCount['result']>0){
        $validation = array(
            "responseCode" =>  $this->res = 200,
            "responseMessage" =>  $this->login = 'Training programs details successfully added',
            "data" =>  $this->data = $userCount['result'] );
        echo json_encode($validation);

这是我错误的json响应:

代码语言:javascript
复制
"type": {
         "F-A": [
                 {
                  "type": "F-A",
                  "name": "Jon",
                  "age": "24",
                  "id": "1"
                 },
                 {
                  "type": " F-A",
                  "name": "roy",
                  "age": "25",
                  "id": "2"
                 },
                 {
                  "type": "F-E",
                  "name": "robert",
                  "age": "26",
                  "id": "3"
                  },
                  {
                   "type": " F-E",
                   "name": "sina",
                   "age": "25",
                   "id": "4"
                  }
                 ],
         " F-A": [
                  {
                   "type": "F-A",
                   "name": "Jon",
                   "age": "24",
                   "id": "1"
                  },
// etc.
EN

回答 1

Stack Overflow用户

发布于 2018-08-16 04:44:56

假设您正在对type列进行预排序,您只需要对键type和来自type列的迭代值进行硬编码,然后将剩余的行数据作为子数组进行推送。循环结束后,对输出数组进行编码。

我将使用pretty_print使输出更容易阅读,但您不一定需要这样做。

代码:(Demo)

代码语言:javascript
复制
$resultset = [
    ['id' => 1, 'type' => 'F-A', 'name' => 'jon', 'age' => 24],
    ['id' => 2, 'type' => 'F-A', 'name' => 'roy', 'age' => 25],
    ['id' => 3, 'type' => 'F-E', 'name' => 'robert', 'age' => 26],
    ['id' => 4, 'type' => 'F-E', 'name' => 'sina', 'age' => 25]
];

foreach ($resultset as $row) {
    $output['type'][$row['type']][] = ['name' => $row['name'], 'age' => $row['age'], 'id' => $row['id']];
}
echo json_encode($output, JSON_PRETTY_PRINT);

输出:

代码语言:javascript
复制
{
    "type": {
        "F-A": [
            {
                "name": "jon",
                "age": 24,
                "id": 1
            },
            {
                "name": "roy",
                "age": 25,
                "id": 2
            }
        ],
        "F-E": [
            {
                "name": "robert",
                "age": 26,
                "id": 3
            },
            {
                "name": "sina",
                "age": 25,
                "id": 4
            }
        ]
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51859543

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档