如何计算一个数组来填充另一个数组?

时间:2012-08-21 08:40:47

标签: php arrays

我有一个数组存储等级名称,等级值为关键,等级名称为值:

$labels=array(1=>'Insufficient',2=>'Sufficient',3=>'Satisfactory',4=>'Good',5=>'Excellent' );

然后,还有另一个数组存储获得成绩的所有人的记录,其中user_id为关键,等级值为值:

$grades = array( 123 = > 1, 456 => 5 , 789 = > 3);

现在我想计算每个年级下的记录 - grade-1 => 5 users, grade-2=>6 users,形式如下:

array(1=>5, 2=>6, 3=>2, 4=>2, 5=>1);

我试过这个并且得到了未定义偏移的错误:

$result = array();

for($i=1;$i<=5;++$i)
{
    foreach($grades as $user_id=>$user_grade)
    {
        $result[$i] = ( $user_grade == $i ) ? $result[$i]+1 : $result[$i];
    }
}

如何获得计算每个年级下用户数量的结果数组?

2 个答案:

答案 0 :(得分:3)

听起来像array_count_values()就可以了。

e.g。

<?php
$grades = array ( // this array contains no value "1"
   68 => 4, 138 => 4, 189 => 2, 255 => 4,
  297 => 3, 366 => 2, 425 => 4, 465 => 3,
  489 => 5, 580 => 4, 646 => 4, 704 => 5,
  784 => 2, 811 => 4, 897 => 4, 974 => 5,
  1006 => 2, 1093 => 2, 1189 => 2, 1222 => 4
);

$cnt = array_count_values($grades);
$cnt += array(1=>0,0,0,0,0);
ksort($cnt);

print_r($cnt);

打印

Array
(
    [1] => 0
    [2] => 6
    [3] => 2
    [4] => 9
    [5] => 3
)

答案 1 :(得分:0)

试一试:

// $labels = array("Grade Value" => "Grade Name")
$labels=array(1=>'Insufficient',2=>'Sufficient',3=>'Satisfactory',4=>'Good',5=>'Excellent' );

// $grades = array("User Id" => "Grade Value")
$grades = array( 123 => 1, 456 => 5 , 789 => 3);

//OutPUT :  array( "Gread Value " => "No Of Users ")

foreach($labels as $key => $value)
{
    $userCount = 0;
    foreach($grades as $key1=> $value1)
    {
        if($key == $value1)
        {
            $userCount++;
        }
    }

    $result[$key] = $userCount;
}

print_r($result);