Sie können ein mehrdimensionales Array nicht nur mit MySQL abrufen (zumindest soweit ich weiß). Sie müssen etwas PHP-Verarbeitung durchführen. Das klingt nicht zu verrückt.
Aktualisieren Sie zunächst Ihre Abfrage, um gleichzeitig Antworten auszuwählen, indem Sie quiz_answers
beitreten auf quiz_questions
mit der Fragen-ID. Dann in Ihrer Schleife:
$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'));
Dadurch erhalten Sie das gewünschte Array, nachdem es json-codiert wurde.
Beachten Sie, dass Sie am Ende den Fragetext/die ID einmal pro Antwort auswählen, was ineffizient ist. Sie können GROUP_CONCAT
verwenden auf die Antworten, aber das obige funktioniert immer noch fast identisch, Sie müssen nur die Antwortzeichenfolge aufteilen.
Ich schlage auch vor, dass Sie PDO
verwenden oder irgendein anderer Wrapper über mysql_*
.