我非常擅长使用PHP进行编码,我试图找出学生的平均分数,以便他们可以在在线表单上查看。如何在PHP中使用二维数组找到以下平均值?
Maths English Science
Student 1 50 92 62
Student 2 84 71 76
Student 3 67 87 68
我需要平均值:
这是我到目前为止所做的:
<?php
$classMarks = array
(
'student 1' => array(50,92,62),
'student 2' => array(84,71,76),
'student 3' => array(67,87,68),
'maths' => array(50,84,67),
'english' => array(92,71,87),
'science' => array(62,76,68),
);
答案 0 :(得分:2)
无需复制数据,您只需使用:
$classMarks = array
(
'student 1' => array(50,92,62),
'student 2' => array(84,71,76),
'student 3' => array(67,87,68),
);
对于学生,将特定学生的分数相加,在这种情况下student 1
并除以分数:
$student1 = array_sum($classMarks['student 1']) / count($classMarks['student 1']);
对于主题,由于maths
位于第一个位置(偏移0),然后提取偏移0中的所有值,english
将偏移1等,并以相同的方式计算平均值:< / p>
$maths = array_sum($subj = array_column($classMarks, 0)) / count($subj);
$english = array_sum($subj = array_column($classMarks, 1)) / count($subj);
但更有意义的结构可能是:
$classMarks = array
(
'student 1' => array('maths'=>50,'english'=>92,'science'=>62),
'student 2' => array('maths'=>84,'english'=>71,'science'=>76),
'student 3' => array('maths'=>67,'english'=>87,'science'=>68),
);
然后通过maths
:
$maths = array_sum($subj = array_column($classMarks, 'maths')) / count($subj);
答案 1 :(得分:0)
foreach循环
将每个元素循环为学生键=&gt;平均值 然后添加它们,位置0 1和2,然后除以3(3个分数)。我打破了它,所以你可以看到步骤,但它可以在1行内完成。
然后创建包含平均值的新数组
foreach($classMarks as $student => $averages){
$averaged = $averages[0] + $averages[1] + $averages[3];
$averaged = $average / count($classMarks($student);
$newArray[] = [$student = > averaged];
}
print_r($newArray);
答案 2 :(得分:0)
如果您在问题中获得具有结构的数组,则可以通过这种方式计算平均值
$avg = array();
foreach($classMarks as $k=>$v) {
$avg[$k] = array_sum($classMarks[$k]) / count($classMarks[$k]);
}
print_r($avg);