Вот моя проблема: в моем контроллере я хочу получить пользовательский ввод из формы. Затем я анализирую входные данные и сравниваю их со значениями в базе данных, чтобы убедиться в правильности ввода. Я просто хочу сопоставить ответы пользователя на вопрос, получить идентификатор пользователя, идентификатор вопроса, а затем определить, относится ли ответ к вопросу с несколькими вариантами ответов или флажком, или к чему-то еще. Я беру эти значения и вставляю их в таблицу ответов. Проигнорируйте вещи отказа. Я проверю это, как только получу правильные ответы.
// add answers and waiver consent records
try {
$answerArray = array();
$waiverArray = array();
// retrieve answers, waiver consents, and the question ID's from form object
foreach ($formData as $key => $value) {
$parts = explode("_", $key);
if ($parts[0] == 'question') {
array_push($answerArray, $value);
}
if ($parts[0] == 'waiverTitle') {
array_push($waiverArray, $value);
}
}
$questions = new Model_DbTable_Questions();
$questionResults = $questions->getQuestionResults($session->idEvent);
foreach ( $questionResults as $qr ) {
if ($qr ['questionType'] == 'multipleChoice' || $qr ['questionType'] == 'checkBox') {
foreach ( $answerArray as $aa ) {
$answerData = $answers->addAnswer ( $lastUserID, $qr ['idQuestion'], null, $aa );
echo count ( $answerData ) . ', ' . $qr ['questionType'] . ', ' . $aa . '<br />';
}
} else {
foreach ( $answerArray as $aa ) {
$answerData = $answers->addAnswer ( $lastUserID, $qr ['idQuestion'], $aa, null );
echo count ( $answerData ) . ', ' . $qr ['questionType'] . ', ' . $aa . '<br />';
}
}
}
}
catch (Zend_Db_Statement_Exception $e)
{
$e->getMessage();
throw $e;
}
Исходя из моих тестовых данных, я ожидаю получить 2 записи, которые соответствуют критериям множественного выбора и флажков, и 1 запись для текста в предложении ELSE, например:
3, checkbox, 1
3, multipleChoice, 1
3, text, question_2
То, что я получаю, является декартовым произведением 3х3, каждый из 3 элементов вопроса с 3 возможными ответами, подобными этим выводам из эхо-операторов:
4, checkBox, 1
4, checkBox, 1
4, checkBox, question_2
4, multipleChoice, 1
4, multipleChoice, 1
4, multipleChoice, question_2
4, text, 1
4, text, 1
4, text, question_2
Я пытался поместить предложение IF во внутренний foreach, но получаю те же результаты. Я слишком долго смотрю на эту проблему и не могу понять, что я делаю неправильно. Ваша помощь будет принята с благодарностью. Пожалуйста, дайте мне знать, если мой запрос требует дополнительных разъяснений.