我有一个问题,显示一个数组的列。我有这个代码来为我的学生计算成绩:$AvgV(平均)工作得很好。
$AvgV=array();
$Sum = 0;
for ($j=1;$j<9;$j++){
for ($k=1;$k<=$NumStudents;$k++){
if (isset($TableGrades[$k][$j])) {
$Sum = $Sum + $TableGrades[$k][$j];
}
print ("k $k -> j $j " . $TableGrades[$k][$j] . "<br> ");
print ("<br>");
}
if ($Sum != 0) $AvgV[$j]=round($Sum/$NumGradesV[$j],1);
else $AvgV[$j] = '-.-';
$Sum = 0;
}
当我执行打印时,我得到如下:
k1 -> j1 5.5
k2 -> j1 3
k3 -> j1 5.5
k4 -> j1 4.5
k5 -> j1 5
k6 -> j1 5.5
k7 -> j1 5.5
k8 -> j1 4
k9 -> j1 6
k10 -> j1 3
k11 -> j1 5.5
k12 -> j1 4
k13 -> j1 6
k14 -> j1 5.5
k15 -> j1 5.5
k16 -> j1 5.5
k17 -> j1 5
k1 -> j2 5.5
k2 -> j2 5
k3 -> j2 5.5
k4 -> j2 4.5
k5 -> j2 3.5 etc....
我想做一些统计,也就是知道,例如,在第二列中有多少学生得到了4.5或3.5或5.5的分数,也就是把分数分组在一个新的数组中,像这样:例如:
6 5.5 5 4 grades etc....
2 3 2 1 students
这个函数运行良好:
function array_count_values_of($value, $TableauNotes) {
$counts = array_count_values($TableauNotes);
return $counts[$value];
}
$TableauNotes = array($TableauNotes[1][6], $TableauNotes[2][6], $TableauNotes[3][6], $TableauNotes[4][6], $TableauNotes[5][6], $TableauNotes[6][6], $TableauNotes[7][6], $TableauNotes[8][6], $TableauNotes[9][6], $TableauNotes[10][6], $TableauNotes[11][6], $TableauNotes[12][6], $TableauNotes[13][6], $TableauNotes[14][6], $TableauNotes[15][6], $TableauNotes[16][6], $TableauNotes[17][6]);
echo array_reduce($array, function ($v, $n) { return $v + ($n == 6); }, 0);
但我不知道如何调用函数,并把结果在一个新的数组。我希望我的描述足够好。非常感谢您的帮助。
根据我的理解,你想保存你的函数array_count_values_of的结果在一个变量中…这么做:
$myarray = array_count_values_of($value, $TableauNotes);
将函数的输出存储在$myarray中。
如果我理解错了你的问题,请随时评论,祝你好运!