En fråga är bra. Som du har det, och förmodligen det bättre alternativet. Du måste räkna ut vilket som är mer effektivt, för att låta MySQL ta påfrestningen, eller nätverket och PHP ta påfrestningen. Det är mycket bättre att låta PHP ta påfrestningen än MySQL, men där MySQL har "inbyggda" funktioner, såsom den gruppering du önskar, lämna MySQL och spara nätverkstrafiken.
För att få det här att fungera:lägg till "ORDER BY p.post_id, pc.comment_id" i din fråga - detta får resultaten i ordning.
Sedan, om du måste bygga in i en array (även om du kanske kan bearbeta direkt utan att använda en array, skulle metoden vara liknande):
$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);
}