Một truy vấn là tốt. Khi bạn có nó, và có lẽ là opton tốt hơn. Bạn phải tìm ra cách nào hiệu quả hơn, để MySQL chịu khó hoặc mạng và PHP chịu áp lực. Tốt hơn rất nhiều nếu để PHP chịu nhiều áp lực hơn MySQL, nhưng khi MySQL có các tính năng "sẵn có", chẳng hạn như nhóm bạn mong muốn, sau đó rời khỏi MySQL và tiết kiệm lưu lượng mạng.
Để làm cho việc này hoạt động:hãy thêm "ORDER BY p.post_id, pc.comment_id" vào truy vấn của bạn - điều này sẽ nhận được kết quả theo thứ tự.
Sau đó, nếu bạn phải xây dựng thành một mảng (mặc dù bạn có thể xử lý trực tiếp mà không cần sử dụng một mảng, phương pháp sẽ tương tự):
$lastPostID = 0;
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
if ($lastPostID <> $row['post_id']) {
$lastPostID = $row['post_id'];
$answers[$lastPostID] = array('post_id' => $row['post_id'],
'author_id' => $row['author_id'],
etc
'comments' => array() );
}
$answers[$lastPostID]['comments'][] = array('comment_id' => $row['comment_id'], 'coment' => $row['comment'] etc);
}