我想使用存儲在數據庫表中的值創建一些在線測驗。每個頁面將顯示10個問題,每個問題後面四個可能的答案......多維數組+ Foreach
What color are apples?
red
yellow
blue
pink
我知道如何做一個簡單的陣列將顯示所有的問題。或者我可以顯示所有的答案。但將每組答案與適當的答案組合起來會更棘手。
有人建議我使用與foreach結合的多維數組。所以我開始檢查一些相關的線索,其中包括@php PDO fetchAll() - while not working, foreach works,但我完全被雪覆蓋了。
這是我想出迄今...
$Questions = array('question' => $Question, 'answers' => array($Answers));
foreach ($Questions as $Question => $Answers) {
echo $Questions.'<br />';
}
但它可能有更多的錯誤比我可以指望。這至少在正確的軌道上?
我在下面發佈我的代碼。
$stmt = $pdo->prepare("SELECT T.URL, TQ.URL, TQ.QID, TQ.Question, TQ.Feedback, TA.URL, TA.QID QID2, TA.Value, TA.Answer, TA.Correct
FROM g_tests T
LEFT JOIN g_test_questions TQ ON TQ.URL = T.URL
LEFT JOIN g_test_answers TA ON TA.URL = T.URL
WHERE T.URL = 'gw-intro-1' AND TQ.QID = TA.QID
ORDER BY TA.N");
$stmt->execute(array(
'MyURL'=>$MyURL
));
while ($row = $stmt->fetch()) {
$URL = $row['URL'];
$QID = $row['QID'];
$QID2 = $row['QID2'];
$Question = $row['Question'];
$Feedback = $row['Feedback'];
$Value = $row['Value'];
$Answer = $row['Answer'];
$Correct = $row['Correct'];
$Correct = str_replace('1', 'correct', $Correct);
$Correct = str_replace('2', 'wrong', $Correct);
$Questions = array('question' => $Question, 'answers' => array($Answers));
foreach ($Questions as $Question => $Answers) {
echo $Questions.'<br />';
}
}
我編輯這表明我修改後的代碼:
$stmt = $pdo->prepare("SELECT T.Site, T.Type, T.URL, T.Section, T.URL_Foreign, T.Title, T.Subtitle, T.Parent, T.Live, TQ.URL, TQ.QID, TQ.Question, TQ.Feedback, TA.URL, TA.QID QID2, TA.Value, TA.Answer, TA.Correct
FROM g_tests T
LEFT JOIN g_test_questions TQ ON TQ.URL = T.URL
LEFT JOIN g_test_answers TA ON TA.URL = T.URL
WHERE T.URL = 'gw-intro-1' AND TQ.QID = TA.QID
ORDER BY TA.N");
$stmt->execute(array('MyURL' => $MyURL));
$Array = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($Array as $dataset){
foreach ($dataset as $Column => $Value){
echo "The column [$Column] contains [$Value] <br> \r\n";
}
}
我才發現,原來這個代碼 - 回聲$問題['問題']; - 在循環內插入多個回答每個問題。當在迴路外迴盪時,它只是迴應一個問題。我還無法顯示任何答案。 –