2017-04-19 4 views
0

Im Codeigniter RESTful APIを使用して、入力に基づいてデータベースからデータを取得します。今では、私のjson出力を異なる方法で表示する方法を変更したいと思います。エコー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

は、この1つはまた、罰金:) – 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); 
    } 
} 
関連する問題