0
$nialiakhirpraktikum = $ntugasakhir+$ratarata; //from other process 
if ($nialiakhirpraktikum>79) { $grade="A"; } 
else if ($nialiakhirpraktikum<=79 AND $nialiakhirpraktikum>67) { $grade="B"; } 
else if ($nialiakhirpraktikum<=67 AND $nialiakhirpraktikum>55) { $grade="C"; } 
else if ($nialiakhirpraktikum<=55 AND $nialiakhirpraktikum>44) { $grade="D"; } 
else { $grade="E"; }     
$array = array($grade); 
print_r(array_count_values($array));

私はこのような配列にいくつかの結果があります:

Array ( [B] => 1 ) 
Array ( [B] => 1 ) 
Array ( [C] => 1 ) 
Array ( [C] => 1 ) 
Array ( [B] => 1 ) 
Array ( [B] => 1 ) 
Array ( [B] => 1 ) 
Array ( [B] => 1 ) 
Array ( [B] => 1 ) 
Array ( [B] => 1 )

次のように結果を取得する方法:

score for B = 8

score for C = 2
4

3 に答える 3

2

サブ配列に含まれるアイテムが1つだけの場合は、次のコードを使用できます。

array_count_values(array_map('key', $array));

ここ、

  • array_count_values()配列のすべての値をカウントします
  • array_map()指定された配列の要素にコールバックを適用します
  • key()配列からキーを取得します

イデオネ

アップデート

ループしているだけなので、ループの前に初期化$arrayしてから、ループにアイテムを追加します。ループが終了した後、を呼び出しarray_count_valuesます。

$array = array(); // initialize before loop
for(...){   /// sample loop
   // your original code
   $array[] = $grade;  // add grades here
}
$grade_distribution = array_count_values($array); // count it

foreach($grade_distribution as $g => $count)
    echo "score for $g = $count\n";
于 2012-12-25T09:04:44.147 に答える
0

特定の文字の合計を返す関数は次のとおりです。

function getTotal($key, $array) {
    $total = 0;
    foreach ($array as $currentArray) {
        foreach ($currentArray as $currentKey => $currentValue) {
            if ($key === $currentKey) {
                $total += $currentValue;
            }
        }
    }
    return $total;
}

次に、次のように使用します。

$totalForB = getTotal('B', $myArray);
于 2012-12-25T08:50:30.510 に答える
0
$base=array(array("B"=>1),array("C"=>1),array("B"=>1),array("B"=>1),array("C"=>1));
print_r($base); // just to debug
$score=array_reduce($base,function(&$rst,$i){
    foreach($i as $k=>$s){
        if(empty($rst[$k])){
            $rst[$k]=0;
        }
        $rst[$k]+=$s;
    }
    return $rst;
},array());
print_r($score);

の出力print_r($base)

Array
(
    [0] => Array
        (
            [B] => 1
        )

    [1] => Array
        (
            [C] => 1
        )

    [2] => Array
        (
            [B] => 1
        )

    [3] => Array
        (
            [B] => 1
        )

    [4] => Array
        (
            [C] => 1
        )

)

の出力print_r($score)

Array
(
    [B] => 3
    [C] => 2
)
于 2012-12-25T09:02:04.270 に答える