Anda perlu memetakan ulang array Anda dan kemudian menginisialisasi array untuk kunci hak... jadi, ubah while loop Anda seperti ini:
$json_response = array();
while($row = $result->fetch_assoc()) {
if (!isset($json_response[ $row['idCategory'] ])) {
$json_response[ $row['idCategory'] ] = [
'idCategory' => $row['idCategory'],
'nameCategory' => $row['nameCategory'],
'rights' => [],
];
}
$json_response[ $row['idCategory'] ]['rights'][] = [
'idRight' => $row['rid'],
'name' => $row['rname'],
'price' => $row['price'],
'image' => $row['rimg']
];
}
// We want the final result to ignore the keys and to create a JSON array not a JSON object
$data = [];
foreach ($json_response as $element) {
$data[] = $element;
}
echo json_encode($data);
Ini bagian dari kode $json_response[ $row_array['idCategory'] ]
membantu mempertahankan pengelompokan data yang unik karena membuat hash berdasarkan idCategory. Array hanya dapat memiliki satu kunci dan karena idCategory selalu unik, kita dapat menggunakannya sebagai kunci untuk pengelompokan. Kemudian karena kita sekarang memiliki array berbasis hash, kita harus membuat array baru yang merupakan array 'nyata' untuk saat dikonversi ke JSON.Anda tidak ingin menggunakan GROUP BY atau GROUP_CONCAT dalam situasi ini.