На самом деле, Sunject
, Class
и Average
могут повторяться, как я вижу.
Это решение основано на наборе unique empNames
, обработке index
первого появления и суммировании средних значений.
Разместите $ar_emp = []; $ar_s = [];
перед оператором foreach
, а затем замените:
$data[]= array(
'empName' => $value->emp_name,
'class' => $value->course_name." ".$value->class_name,
'subjectName' => $value->subjectName,
'average' => $average
);
на приведенный ниже код:
$val_ename = $value->emp_name;
$val_class = $value->course_name." ".$value->class_name;
$val_sname = $value->subjectName;
$val_avera = $average;
if (!in_array($val_ename, $ar_emp)) {
array_push($ar_emp, $val_ename);
$ar_s[$val_ename] = array (
'coun' => 1,
'average' => $val_avera,
'inde' => $key
);
$data[]= array(
'empName' => $val_ename,
'class' => $val_class,
'subjectName' => $val_sname,
'last_average' => $val_avera,
'final' => $val_avera
);
} else {
$ar_s[$val_ename]['coun'] += 1;
$ar_s[$val_ename]['average'] += $val_avera;
$data[$ar_s[$val_ename]['inde']]= array(
'empName' => $val_ename,
'class' => $val_class,
'subjectName' => $val_sname,
'last_average' => $val_avera,
'final' => ($ar_s[$val_ename]['average'] / $ar_s[$val_ename]['coun'])
);
}