массивы — мне нужна помощь в цикле через файл JSON с переполнением стека

я имею этот файл JSON (укороченная версия) и нужно пройти по нему для каждого вопроса # и добавить детали вопроса в БД MySQL. Есть 10 вопросов на викторину. Каждый тест состоит из URL, заголовка, изображения и вопросов (массив). Есть 10 вопросов с 4 вариантами ответов для каждого теста.

Я ищу отправную точку, чтобы начать цикл и повторить вопросы. Любая помощь будет оценена. Спасибо!

Извлечение данных из кода руки — я хочу пройти через это.

// this will be associated with every question in a quiz.
$url = $json['rows'][0]['URL'];
$Title = $json['rows'][0]['Title'];
$Questions = $json['rows'][0]['Questions'];
$Image = $json['rows'][0]['Image'];
//  I need these to loop thorugh for Q1, Q2, Q3, etc..... for every Q# in row0
$Q1Text = $json['rows'][0]['Questions']['Question1']['Question Text'];
$Q1MediaURL = $json['rows'][0]['Questions']['Question1']['Question Media']['Media url'];
$Q1MediaType = $json['rows'][0]['Questions']['Question1']['Question Media']['Media Type'];
$Q1Answer1 = $json['rows'][0]['Questions']['Question1']['Answers']['Answer1']['Answer'];
$Q1Answer1Value = $json['rows'][0]['Questions']['Question1']['Answers']['Answer1']['Value'];
$Q1Answer2 = $json['rows'][0]['Questions']['Question1']['Answers']['Answer2']['Answer'];
$Q1Answer2Value = $json['rows'][0]['Questions']['Question1']['Answers']['Answer2']['Value'];
$Q1Answer3 = $json['rows'][0]['Questions']['Question1']['Answers']['Answer3']['Answer'];
$Q1Answer3Value = $json['rows'][0]['Questions']['Question1']['Answers']['Answer3']['Value'];
$Q1Answer4 = $json['rows'][0]['Questions']['Question1']['Answers']['Answer4']['Answer'];
$Q1Answer4Value = $json['rows'][0]['Questions']['Question1']['Answers']['Answer4']['Value'];

$Q2Text = $json['rows'][0]['Questions']['Question2']['Question Text'];
$Q2MediaURL = $json['rows'][0]['Questions']['Question2']['Question Media']['Media url'];
$Q2MediaType = $json['rows'][0]['Questions']['Question2']['Question Media']['Media Type'];
$Q2Answer1 = $json['rows'][0]['Questions']['Question2']['Answers']['Answer1']['Answer'];
$Q2Answer1Value = $json['rows'][0]['Questions']['Question2']['Answers']['Answer1']['Value'];
$Q2Answer2 = $json['rows'][0]['Questions']['Question2']['Answers']['Answer2']['Answer'];
$Q2Answer2Value = $json['rows'][0]['Questions']['Question2']['Answers']['Answer2']['Value'];
$Q2Answer3 = $json['rows'][0]['Questions']['Question2']['Answers']['Answer3']['Answer'];
$Q2Answer3Value = $json['rows'][0]['Questions']['Question2']['Answers']['Answer3']['Value'];
$Q2Answer4 = $json['rows'][0]['Questions']['Question2']['Answers']['Answer4']['Answer'];
$Q2Answer4Value = $json['rows'][0]['Questions']['Question2']['Answers']['Answer4']['Value'];

$Q3Text = $json['rows'][0]['Questions']['Question3']['Question Text'];
$Q3MediaURL = $json['rows'][0]['Questions']['Question3']['Question Media']['Media url'];
$Q3MediaType = $json['rows'][0]['Questions']['Question3']['Question Media']['Media Type'];
$Q3Answer1 = $json['rows'][0]['Questions']['Question3']['Answers']['Answer1']['Answer'];
$Q3Answer1Value = $json['rows'][0]['Questions']['Question3']['Answers']['Answer1']['Value'];
$Q3Answer2 = $json['rows'][0]['Questions']['Question3']['Answers']['Answer2']['Answer'];
$Q3Answer2Value = $json['rows'][0]['Questions']['Question3']['Answers']['Answer2']['Value'];
$Q3Answer3 = $json['rows'][0]['Questions']['Question3']['Answers']['Answer3']['Answer'];
$Q3Answer3Value = $json['rows'][0]['Questions']['Question3']['Answers']['Answer3']['Value'];
$Q3Answer4 = $json['rows'][0]['Questions']['Question3']['Answers']['Answer4']['Answer'];
$Q3Answer4Value = $json['rows'][0]['Questions']['Question3']['Answers']['Answer4']['Value'];

ОБНОВЛЕНИЕ: Это рабочий код, который я закончил. Спасибо за вашу помощь @Lou!

foreach($json['rows'] as $row){ // This will loop trough every rows in your array.
foreach($row['Questions'] as $question){ //This will loop trough all the questions of the current row.
echo ''.print_r($question).'<br>'; //You can access the array of your question here. using $question. For now it will just print it's content.

echo "<strong>Quiz URL:</strong> " . $row["URL"]. "<br>";
echo "<strong>Quiz Title:</strong> " . $row["Title"]. "<br>";
echo "<strong>Quiz Image:</strong> " . $row["Image"]. "<br><br><br>";echo "<strong>Question Text:</strong> " . $question['Question Text']. "<br>";
echo "<strong>Media URL:</strong> " . $question['Question Media']['Media url']. "<br>";
echo "<strong>Media Type:</strong> " . $question['Question Media']['Media Type']. "<br>";
echo "<strong>Answer1:</strong> " . $question['Answers']['Answer1']['Answer'] . " | " . $question['Answers']['Answer1']['Value'] . "<br>";
echo "<strong>Answer2:</strong> " . $question['Answers']['Answer2']['Answer'] . " | " . $question['Answers']['Answer2']['Value'] . "<br>";
echo "<strong>Answer3:</strong> " . $question['Answers']['Answer3']['Answer'] . " | " . $question['Answers']['Answer3']['Value'] . "<br>";
echo "<strong>Answer4:</strong> " . $question['Answers']['Answer4']['Answer'] . " | " . $question['Answers']['Answer4']['Value'] . "<br>";echo "<br>";
}
}

0

Решение

Итак, я полагаю, глядя на ваш текущий код, что вы уже декодировали свой json как массив.

Теперь, если вы хотите зациклить этот массив. Вы можете использовать циклы foreach. Посмотрите фрагмент ниже, если он может вам помочь:

foreach($json['rows'] as $row){ // This will loop trough every rows in your array.
foreach($row['Questions'] as $question){ //This will loop trough all the questions of the current row.
echo '<pre>'.print_r($question).'</pre><br><br>'; //You can access the array of your question here. using $question. For now it will just print it's content.
}
}

Если вам нужна дополнительная помощь, дайте мне знать.

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector