Я не могу суммировать данные отдельных студентов - PullRequest
0 голосов
/ 24 сентября 2019

В моем приложении я хочу суммировать индивидуальные оценки.

Предположим, что первый бросок ученика номер 11, и я хочу добавить все отметки ученического рулона № 11. После броска ученика 11 это будет ученический бросок № 12.затем 13 14 и т. д. В моем коде я могу добавить все оценки вместе, но разделить их на основе номера студенческого списка.В приведенном ниже я дал код.

Пожалуйста, ребята, помогите мне.

Код контроллера:

if ($this->input->post('save_exam') == "save_exam") {
    $ex_array = array();
    $exam_id = $this->input->post('exam_id');
    $student_array = $this->input->post('student');
    $exam_array = $this->input->post('exam_schedule');
    $total_marks =0;
    foreach ($student_array as $key => $student) {
        foreach ($exam_array as $key => $exam) {
            $record['get_marks'] = 0;
            $record['attendence'] = "pre";
            if ($this->input->post('student_absent' . $student . "_" . $exam) == "") {
                $get_marks = $this->input->post('student_number' . $student . "_" . $exam);
                $record['get_marks'] = $get_marks;
                $total_marks = $total_marks + $get_marks;
            } else {
                $record['attendence'] = $this->input->post('student_absent' . $student . "_" . $exam);
            }
            $record['exam_schedule_id'] = $exam;
            $record['student_id'] = $student;
            $record['exam_id'] = $this->input->post('exam_id');

            $inserted_id = $this->examresult_model->add_exam_result($record);

            if ($inserted_id) {
                $ex_array[$student] = $exam_id;
            }
        }
    }
}

1 Ответ

0 голосов
/ 24 сентября 2019

Вы создаете $ total_marks как простую переменную.Итак, оно имеет одну ценность - ценность для всех.Это должен быть массив.Не устанавливайте его в ноль - установите его в пустой массив.

$total_marks = array();

По мере того, как вы перебираете массив учеников, создайте индекс в массиве итоговых оценок и инициализируйте его нулем:

$total_marks[$student] = 0;

ВАЖНОЕ ПРИМЕЧАНИЕ: Вы повторно используете $ key в двух циклах.Плохая практика!

Теперь, когда вы добавляете к общему значению отметок, добавляйте его только к этому одному индексу:

$total_marks[$student]+= $get_marks;

Когда вы закончите, $ total_marks будет массивом, однимэлемент на ученика.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...