Anda tidak dapat mengambil array multi-dimensi murni dengan mysql (setidaknya sejauh yang saya tahu). Anda harus melakukan beberapa pemrosesan php. Ini tidak terdengar terlalu gila.
Pertama, perbarui kueri Anda untuk memilih jawaban secara bersamaan dengan bergabung dengan quiz_answers
di quiz_questions
menggunakan ID pertanyaan. Kemudian, dalam lingkaran Anda:
$quiz = array();
while ($row = mysql_fetch_assoc($result)) {
// you don't need to check num_rows
// fetch_assoc returns false after the last row, so you can do this
// which is cleaner
if (!isset($quiz[$row['question_id'])) {
$quiz[$row['question_id']] = array(
'question' => $row['question_text']
, 'answers' => array()
);
}
$quiz[$row['question_id']]['answers'][] = $row['answer_text'];
}
$full = json_encode(array('questions' => $quiz'));
Ini akan memberi Anda array yang Anda inginkan setelah json dikodekan.
Perhatikan bahwa Anda akhirnya akan memilih teks/id pertanyaan sekali per setiap jawaban, yang tidak efisien. Anda dapat menggunakan GROUP_CONCAT
pada jawaban, tetapi yang di atas masih akan bekerja hampir sama, Anda hanya perlu membagi string jawaban.
Saya juga menyarankan Anda menggunakan PDO
atau pembungkus lain di atas mysql_*
.