Hoewel u de gewenste array in een enkele lus kunt genereren, zou ik liever twee query's uitvoeren. Haal eerst alle merken op in een array en voeg een lege productarray toe aan elk merk. Haal vervolgens alle producten op en wijs ze toe aan het gerelateerde merk.
Aangezien ik niet weet welke DB-bibliotheek je gebruikt, hier een soort pseudo-code:
$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;
}