2017-04-19 81 views
0

使用Codeigniter RESTful API從輸入數據庫中獲取數據。現在我想改變以不同方式顯示我的json輸出的方式。Echo JSON編碼數據

CODE:

function categoryskills_get() 
{ 
    $category = $this->get('category'); 
    $skills = $this->Users_model->categoryskills($category); 
    if($skills != FALSE) 
    { 
     $sub_cat = 0; 
     foreach($skills['skills'] as $row) 
     { 
      $data[$skills['cat']][]['sub_category'] = $row['sub_cat']; 
      $data[$skills['cat']][]['skills'] = $row['s_name']; 
     } 
     $this->set_response($data, REST_Controller::HTTP_OK); 
    }else{ 
     $response["error"] = TRUE; 
     $response["status"] = '404'; 
     $response["error_msg"] = "Category not found!"; 
     $this->set_response($response, REST_Controller::HTTP_NOT_FOUND); 
    } 
} 

上面的代碼是對我的http請求的控制器。

電流輸出

{ 
"Consultants": [ 
    { 
     "sub_category": "Consultants" 
    }, 
    { 
     "skills": "Career Counsellor, Creative Consultant,Digital Consultant" 
    }, 
    { 
     "sub_category": "Accounting" 
    }, 
    { 
     "skills": "Accountant,Auditor,Tax Specialist" 
    } 

] 
} 

預期輸出:

{ 
"Consultants": [ 
    { 
     "sub_category": "Consultants", 
     "skills": "Career Counsellor,Creative Consultant,Digital Consultant" 
    }, 
    { 
    ..... 
    } 
] 
} 

回答

2
function categoryskills_get() 
{ 
    $category = $this->get('category'); 
    $skills = $this->Users_model->categoryskills($category); 
    if($skills != FALSE) 
    { 
     $sub_cat = 0; 
     foreach($skills['skills'] as $key=>$row) 
     { 
      $data[$skills['cat']][$key]['sub_category'] = $row['sub_cat']; 
      $data[$skills['cat']][$key]['skills'] = $row['s_name']; 
     } 
     $this->set_response($data, REST_Controller::HTTP_OK); 
    }else{ 
     $response["error"] = TRUE; 
     $response["status"] = '404'; 
     $response["error_msg"] = "Category not found!"; 
     $this->set_response($response, REST_Controller::HTTP_NOT_FOUND); 
    } 
} 

使用的foreach爲重點,價值和放置$鑰匙插入陣列這樣$data[$skills['cat']][$key]['sub_category'] 你會得到所需的輸出

+0

非常感謝你。這一個也工作得很好:) – Shihas

0

使用如下方法array_push()

$category = $this->get('category'); 
    $skills = $this->Users_model->categoryskills($category); 
    $data = array();//create an empty array 
    if($skills != FALSE) 
    { 
     $sub_cat = 0; 
     foreach($skills['skills'] as $row) 
     { 
      $arr['sub_category'] = $row['sub_cat']; 
      $arr['skills'] = $row['s_name'];//makes an $arr array 
      array_push($data[$skills['cat']], $arr);//push array 
     } 
     $this->set_response($data, REST_Controller::HTTP_OK); 
    }else{ 
     $response["error"] = TRUE; 
     $response["status"] = '404'; 
     $response["error_msg"] = "Category not found!"; 
     $this->set_response($response, REST_Controller::HTTP_NOT_FOUND); 
    } 
} 
2

,很快讓sub_cat單獨的溫度陣列和技能

$category = $this->get('category'); 
    $skills = $this->Users_model->categoryskills($category); 
    $data = array();//create an empty array 
    if($skills != FALSE) 
    { 
     $sub_cat = 0; 
     foreach($skills['skills'] as $row) 
     { 
      $arr['sub_category'] = $row['sub_cat']; 
      $arr['skills'] = $row['s_name'];//makes an $arr array 

      $data[$skills['cat']][] = $arr; //and after that add it to      main array 
     } 
     $this->set_response($data, REST_Controller::HTTP_OK); 
    }else{ 
     $response["error"] = TRUE; 
     $response["status"] = '404'; 
     $response["error_msg"] = "Category not found!"; 
     $this->set_response($response, REST_Controller::HTTP_NOT_FOUND); 
    } 
} 
+0

謝謝你這麼多..它的工作:) – Shihas

1
function categoryskills_get() 
{ 
    $category = $this->get('category'); 
    $skills = $this->Users_model->categoryskills($category); 
    if($skills != FALSE) 
    { 
     $sub_cat = 0; 
     foreach($skills['skills'] as $row) 
     { 
      $data[$skills['cat']][] = array('sub_category'=>$row['sub_cat'],'skills'=>$row['s_name']); 
     } 
     $this->set_response($data, REST_Controller::HTTP_OK); 
    }else{ 
     $response["error"] = TRUE; 
     $response["status"] = '404'; 
     $response["error_msg"] = "Category not found!"; 
     $this->set_response($response, REST_Controller::HTTP_NOT_FOUND); 
    } 
}