純粋にmysqlを使用して多次元配列を取得することはできません(少なくとも私が知る限り)。いくつかのphp処理を行う必要があります。これはあまりクレイジーに聞こえません。
まず、quiz_answers
に参加して、クエリを更新し、同時に回答を選択します quiz_questions
で 質問IDを使用します。次に、ループ内で:
$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'));
これにより、jsonでエンコードされた後に必要な配列が得られます。
質問のテキスト/IDを回答ごとに1回選択することになり、非効率的であることに注意してください。 GROUP_CONCAT
を使用できます 回答については、上記はほぼ同じように機能しますが、回答文字列を分割する必要があります。
また、PDO
を使用することをお勧めします またはmysql_*
のその他のラッパー 。