Reputation: 95
I want my result of json is like this :
[{
"api_code": "111402",
"nama_proyek": "PLTA LAU GUNUNG 2x7.5 MW",
"dvo": "INFRA 2",
"project_progress_plan": "96.644",
"id": "7187",
"rencana": [
"Segera Dibuatkan Addendum waktu & Addendum Kontrak ",
"Segera dibuatkan Addendum Kontrak ke 5"
],
"target": "09/20/2019",
"status": "open",
"realisasi": "76.53",
"project_progress_real": "93.04",
"progress_deviasi": "-20.114",
"end_date": "09-09-2019",
"start_date": "22-12-2015"
},
{
"api_code": "218007",
"nama_proyek": "Pembangunan Simpang Susun Sentul Selatan",
"dvo": "INFRA 1",
"project_progress_plan": "81.69",
"id": "7301",
"rencana": [
"Dengan adanya addendum 1 maka masa pelaksanaan sampai dengan bulan Maret 2020 dengan revisi progres Renacana 31.992 % Realiasasi 34.564 % deviasi + 2.572 "
],
"target": "09/09/2019",
"status": "open",
"realisasi": "35.556",
"project_progress_real": "44.98",
"progress_deviasi": "-46.134",
"end_date": "27-10-2019",
"start_date": "29-01-2019"
}],
but my result of json is like this if I delete in my code the key the value looping just once:
"111402": {
"api_code": "111402",
"nama_proyek": "PLTA LAU GUNUNG 2x7.5 MW",
"dvo": "INFRA 2",
"project_progress_plan": "96.644",
"id": "7187",
"rencana": [
"Segera Dibuatkan Addendum waktu & Addendum Kontrak ",
"Segera dibuatkan Addendum Kontrak ke 5"
],
"target": "09/20/2019",
"status": "open",
"realisasi": "76.53",
"project_progress_real": "93.04",
"progress_deviasi": "-20.114",
"end_date": "09-09-2019",
"start_date": "22-12-2015"
},
"218007": {
"api_code": "218007",
"nama_proyek": "Pembangunan Simpang Susun Sentul Selatan",
"dvo": "INFRA 1",
"project_progress_plan": "81.69",
"id": "7301",
"rencana": [
"Dengan adanya addendum 1 maka masa pelaksanaan sampai dengan bulan Maret 2020 dengan revisi progres Renacana 31.992 % Realiasasi 34.564 % deviasi + 2.572 "
],
"target": "09/09/2019",
"status": "open",
"realisasi": "35.556",
"project_progress_real": "44.98",
"progress_deviasi": "-46.134",
"end_date": "27-10-2019",
"start_date": "29-01-2019"
},
and this is my code, the code is inner join from 3 table and one "proyek" have many "rencana", in this case i have done to grouping it by "api_code" but the result is not same with my expect:
$proyek = $this->db->query("SELECT proyek.api_code, proyek.nama_proyek, proyek.dvo,
pp_proyek.project_progress_plan, proyek.id, proyek_kritis_rencana.rencana,
proyek_kritis_rencana.target, proyek_kritis_rencana.status,
proyek.realisasi, proyek.project_progress_real, proyek.progress_deviasi,
pp_proyek.end_date, pp_proyek.start_date FROM proyek
INNER JOIN pp_proyek ON pp_proyek.code = proyek.api_code
INNER JOIN proyek_kritis_rencana ON proyek_kritis_rencana.proyek = proyek.id")->result_array();
$last = array();
foreach($proyek as $row){
$id = $row['api_code'];
if(isset($last[$id])){
$last[$id]['rencana'][] = $row['rencana'];
}else{
$row['rencana'] = array($row['rencana']);
$last[$id] = $row;
}
}
Upvotes: 0
Views: 58
Reputation: 2438
You can use the function array_values()
on your $last
array, which will remove the ID keys
$last = array(
"111402" => array(
"api_code" => "111402",
"nama_proyek" => "PLTA LAU GUNUNG 2x7.5 MW",
"dvo" => "INFRA 2",
)
, "218007" => array(
"api_code" => "218007",
"nama_proyek" => "Pembangunan Simpang Susun Sentul Selatan",
"dvo" => "INFRA 1",
)
);
echo json_encode($last);
$last = array_values($last); // remove keys
echo json_encode($last);
First output :
{"111402":{
"api_code":"111402",
"nama_proyek":"PLTA LAU GUNUNG 2x7.5 MW",
"dvo":"INFRA 2"
},"218007":{
"api_code":"218007",
"nama_proyek":"Pembangunan Simpang Susun Sentul Selatan",
"dvo":"INFRA 1"}
}
Second output (simple array, no more ID keys) :
[{
"api_code":"111402",
"nama_proyek":"PLTA LAU GUNUNG 2x7.5 MW",
"dvo":"INFRA 2"
},{
"api_code":"218007",
"nama_proyek":"Pembangunan Simpang Susun Sentul Selatan",
"dvo":"INFRA 1"
}]
Upvotes: 1