0

配列の列を表示するのに問題があります。生徒の成績を計算するためのコードがあります: $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....

いくつかの統計を作成したいと思います。たとえば、列 2 で、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);

しかし、関数を呼び出して結果を新しい配列に入れる方法がわかりません。私の説明が十分であることを願っています。どうもありがとうございました。

4

1 に答える 1

0

私が理解したことに基づいて、関数 array_count_values_of の結果を変数に保存したい...そうしてください:

$myarray = array_count_values_of($value, $TableauNotes);

これにより、関数の出力が $myarray に格納されます。

あなたの質問を間違って理解した場合は、お気軽にコメントしてください。頑張ってください!

于 2013-04-03T19:17:05.950 に答える