एक प्रश्न ठीक है। जैसा कि आपके पास है, और शायद बेहतर विकल्प। MySQL को तनाव लेने देने के लिए, या नेटवर्क और PHP को तनाव लेने देने के लिए आपको अधिक कुशल काम करना होगा। PHP को MySQL की तुलना में तनाव लेने देना बहुत बेहतर है, लेकिन जहां MySQL में "इनबिल्ट" विशेषताएं हैं, जैसे कि आप जो समूह बनाना चाहते हैं, फिर MySQL को छोड़ दें और नेटवर्क ट्रैफ़िक को बचाएं।
यह काम करने के लिए:अपनी क्वेरी में "ऑर्डर बाय p.post_id, pc.comment_id" जोड़ें - इससे परिणाम क्रम में मिलते हैं।
फिर, यदि आपको एक सरणी में निर्माण करना है (हालाँकि आप किसी सरणी का उपयोग किए बिना सीधे संसाधित करने में सक्षम हो सकते हैं, तो विधि समान होगी):
$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);
}