Meskipun Anda dapat menghasilkan array yang diinginkan dalam satu loop, saya lebih suka menjalankan dua kueri. Pertama ambil semua merek ke dalam larik dan tambahkan larik produk kosong ke setiap merek. Kemudian ambil semua produk dan tetapkan ke merek terkait.
Karena saya tidak tahu pustaka DB apa yang Anda gunakan, berikut beberapa jenis kode semu:
$data = [];
$brandResult = $db->query("SELECT id, name FROM tbl_brand");
while ($row = $brandResult->fetchObject()) {
$row->product_names = [];
$data[$row->id] = $row;
}
$productResult = $db->query("SELECT id, brand_id, p_name FROM tbl_products");
while ($row = $productResult->fetchObject()) {
$data[$row->brand_id][$row->id] = $row->p_name;
}