Bạn đang sử dụng số lượng truy vấn cực kỳ lớn. Tại sao không thực hiện nó trong một truy vấn duy nhất?
SELECT * FROM `Restaurants` `r`
LEFT JOIN `Dishes` `d` ON (`r`.`id` = `d`.`f_id`)
ORDER BY `r`.`id` ASC
và sau đó sử dụng kết quả để xây dựng đối tượng JSON.
EDIT
Để dễ dàng lặp lại kết quả hơn, tôi đã thay đổi một chút Truy vấn thành:
SELECT
`r`.`id` as `restaurantId`,
`r`.`name`,
`r`.`info`,
`d`.`id` AS `dishId`,
`d`.`dish`,
`d`.`description`
FROM `restaurants` `r`
LEFT JOIN `dishes` `d` ON (`r`.`id` = `d`.`f_id`)
ORDER BY `r`.`id` ASC
kết quả sẽ giống như sau:restaurantId, name, info, dishId, dish, description
bây giờ bạn có thể lặp lại kết quả như sau:
$jsonArray = array();
foreach ($record as $dishDetails){
// details of the restaurant
$jsonArray[$dishDetails['f_id']]['name'] = $dishDetails['name'];
$jsonArray[$dishDetails['f_id']]['info'] = $dishDetails['info'];
// build the dishes of the restaurant
$jsonArray[$dishDetails['f_id']]['dishes'][$dishDetails['dishId']]['dish'] = $dishDetails['dish']
$jsonArray[$dishDetails['f_id']]['dishes'][$dishDetails['dishId']]['description'] = $dishDetails['description']
}