在PHP中使用二维数组计算平均值

时间:2017-05-02 19:46:13

标签: php arrays

我非常擅长使用PHP进行编码,我试图找出学生的平均分数,以便他们可以在在线表单上查看。如何在PHP中使用二维数组找到以下平均值?

             Maths English Science
Student 1     50     92      62
Student 2     84     71      76
Student 3     67     87      68

我需要平均值:

  • 所有科目的学生1的平均分
  • 所有科目中学生2的平均分
  • 所有科目中学生3的平均分
  • 所有3名学生的数学平均分
  • 所有三名学生的英语平均水平
  • 所有三名学生的平均科学

这是我到目前为止所做的:

<?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),
);

3 个答案:

答案 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);