Самый эффективный способ сравнения двух многомерных массивов (оценка теста с несколькими ответами на вопрос)Php

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Самый эффективный способ сравнения двух многомерных массивов (оценка теста с несколькими ответами на вопрос)

Сообщение Anonymous »

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

Код: Выделить всё

$responses = Array
(
[0] => Array
(
[question_id] => 105
[content] => 4
)

[1] => Array
(
[question_id] => 106
[content] => ans 2
)

[2] => Array
(
[question_id] => 106
[content] => blah
)

[3] => Array
(
[question_id] => 106
[content] => blah3
)

)
Ключевой ответ:

Код: Выделить всё

$ans_key = Array
(
[0] => Array
(
[question_id] => 105
[content] => 4
)

[1] => Array
(
[question_id] => 106
[content] => ans 2
)

[2] => Array
(
[question_id] => 106
[content] => blah
)

[3] => Array
(
[question_id] => 106
[content] => blah3
)

)
Это рабочий код, с помощью которого мне удалось успешно оценить тест с помощью вопроса, на который есть несколько ответов:

Код: Выделить всё

foreach($ans_key as $key => $value){
//how many answers per question id
$ans_per_question = array_count_values(array_column($ans_key,'question_id'))[$value['question_id']];

if ($ans_per_question == 1){
if(in_array($value,$answers)){
$correct += 1;
}
} else {
if(in_array($value,$answers)){
$chkbox_correct += 1;
}

if($chkbox_correct == $ans_per_question){
$correct += 1;
}
}
}
echo "Correct : " . $correct . "/ " . count(array_count_values(array_column($ans_key,'question_id')));
Приведенный выше код выведет 2/2, чего я и ожидал. Мой вопрос: есть ли лучший метод для этого? В разработке не будет тестов из двух вопросов, поэтому я беспокоюсь, как это будет работать с 10–20 вопросами.

Подробнее здесь: https://stackoverflow.com/questions/791 ... uiz-with-m
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»