Тест на основе JSON - Распределение результатов SQL в многомерный массив

0

У меня есть множество вопросов и ответов для моей системы викторины, хранящейся в mysql. Моя внедренная процедура направлена на то, чтобы поставить эти вопросы и ответы в многомерный массив, а затем преобразовать его в формат json. Но результат меня не удовлетворяет. Я придерживаюсь следующей процедуры:

Код в PHP:

$query = "SELECT s1.id, s1.question, s2.answers, s2.correct
          FROM 'questions' s1, 'answers' s2
          WHERE s1.id=s2.questionid AND s1.courseid=".$_POST['courseid']."";
$result = mysqli_query($mysqli, $query) or die ("<b>Select failed:</b> ".mysqli_error($mysqli));

$final_quiz = array();
$final_quiz['info']['course'] = $_POST['courseid'];
while ($rows = mysqli_fetch_assoc($result_quiz)) {
    $final_quiz['quiz']['id'] = $rows['id'];
    $final_quiz['quiz']['question'] = $rows['question'];
    $final_quiz['quiz']['answers']['option'] = $rows['answers'];
    $final_quiz['quiz']['answers']['correct'] = $rows['correct'];
}
// convert to JSON
$json = json_encode($final_quiz);
echo $json;

Ожидаемый выход JSON:

{
    "info":{"course":"Some value here"}
    "quiz":[
        {
            "question":"Question number one here?",
            "answers":[
                {"option":"some incorrect answer", "correct":"0"},
                {"option":"a correct answer", "correct":"1"},
                {"option":"another incorrect answer", "correct":"0"}
            ]
        },
        ...
    ]
}

Как организовать многомерный массив, чтобы получить вышеупомянутую структуру json? Любая помощь будет оценена по достоинству.

Теги:
arrays
multidimensional-array
mysqli

1 ответ

1
Лучший ответ

Используйте идентификатор вопроса в качестве ключа в массиве quiz.

while ($row = mysqli_fetch_assoc($result_quiz)) {
    $question_id = $row['id'];
    if (!isset($final_quiz['quiz'][$question_id])) {
        $final_quiz['quiz'][$question_id] = 
            array('question' => $row['question'], 'answers' => array());
    }
    $final_quiz['quiz'][$question_id]['answers'][] = 
        array('option' => $row['answers'], 'correct' => $row['correct']);
}
  • 0
    Это великолепно!! И спасибо за подсказку использовать идентификаторы вопросов в качестве ключей в json :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню