2016-11-16 18 views
1

我想从我的查询中创建json数据。但我无法得到我的JSON数据,因为我预计。请帮忙。这是我试过的代码。 (它看起来像你的职位主要是代码,请添加更多的细节是否足够?)从活动记录中获取json数据

<?php 
     $this->db->select('campus.*, class.*'); 
     $this->db->from('campus'); 
     $this->db->join('class', 'campus.id = class.campus_id'); 
     $campus_info = $this->db->get()->result_array(); 
     foreach ($campus_info as $row) { 
      $var[]['id'] = $row['id']; 
      $var[]['campus_name'] = $row['campus_name']; 
      $var[]['class_id'] = $row['class_id'];   
      $var[]['class_name'] = $row['name']; 
     } 
     $json_data = json_encode($var, JSON_PRETTY_PRINT); 
     echo '<pre>'; 
     echo $json_data; 
     echo '</pre>'; 
     exit(); 

我的查询结果是

Array 
(
    [0] => Array 
     (
      [id] => 4 
      [campus_name] => Test Campus Name 
      [institute_name] => Test Institute Name 1 
      [class_id] => 11 
      [name] => STD - VIII 
      [campus_id] => 4 
      [name_numeric] => 8 
      [teacher_id] => 6 
     ) 

    [1] => Array 
     (
      [id] => 4 
      [campus_name] => Test Campus Name 
      [institute_name] => Test Institute Name 1 
      [class_id] => 15 
      [name] => A' Level 
      [campus_id] => 4 
      [name_numeric] => 12 
      [teacher_id] => 6 
     ) 

想让它JSON像

[{ 
    "id": "7", 
    "campus_name": "Azimpur", 
    "class_id": "9", 
    "class_name": "STD - VI" 
} 
{ 
    "id": "8", 
    "campus_name": "Azimpur", 
    "class_id": "10", 
    "class_name": "STD - VII" 
}] 

但是获得

[ 
    { 
     "id": "4" 
    }, 
    { 
     "campus_name": "Test Campus Name" 
    }, 
    { 
     "class_id": "11" 
    }, 
    { 
     "class_name": "STD - VIII" 
    }, 
    { 
     "id": "4" 
    }, 
    { 
     "campus_name": "Test Campus Name" 
    }, 

回答

2

这是你的问题:

foreach ($campus_info as $row) { 
    $var[]['id'] = $row['id']; 
    $var[]['campus_name'] = $row['campus_name']; 
    $var[]['class_id'] = $row['class_id'];   
    $var[]['class_name'] = $row['name']; 
} 

在这里,您将4个元素添加到您的$var变量的最高级别。

只应添加一个元素:

foreach ($campus_info as $row) { 
    $var[] = [ 
    'id' => $row['id'], 
    'campus_name' => $row['campus_name'], 
    'class_id' => $row['class_id'],  
    'class_name' => $row['name'] 
    ]; 
} 

如果你只选择你需要的列,您可以将此减少到:

foreach ($campus_info as $row) { 
    $var[] = $row; 
} 

,甚至进一步,如果你的数据库API有fetchAll方法。

+1

非常感谢,它的工作原理。 –