/** Проверяет вопрос согласно типу и на выходе дает баллы за него */ private function check($array) { $question = $this->question; $id = $array[0]; $query = $question->whereId_question($id)->select('answer', 'points')->first(); $points = $query->points; $type = $this->getCode($id)['type']; if (count($array) == 1) { //если не был отмечен ни один вариант $choice = []; $score = 0; $data = array('mark' => 'Неверно', 'score' => $score, 'id' => $id, 'points' => $points, 'choice' => $choice); return $data; } for ($i = 0; $i < count($array) - 1; $i++) { //передвигаем массив, чтобы первый элемент оказался последним $array[$i] = $array[$i + 1]; } array_pop($array); //убираем из входного массива id вопроса, чтобы остались лишь выбранные варианты ответа switch ($type) { case 'Выбор одного из списка': //Стас $one_choice = new OneChoice($id); $data = $one_choice->check($array); return $data; break; case 'Выбор нескольких из списка': $multi_choice = new MultiChoice($id); $data = $multi_choice->check($array); return $data; break; case 'Текстовый вопрос': //Стас $fill_gaps = new FillGaps($id); $data = $fill_gaps->check($array); return $data; break; case 'Таблица соответствий': //Миша $accordance_table = new AccordanceTable($id); $data = $accordance_table->check($array); return $data; break; case 'Да/Нет': //Миша $yes_no = new YesNo($id); $data = $yes_no->check($array); return $data; break; case 'Вопрос на вычисление': echo 'Вопрос на вычисление'; break; case 'Вопрос на соответствие': echo 'Вопрос на соответствие'; break; case 'Вид функции': echo 'Вопрос на определение аналитического вида функции'; break; } }