doushan5245 2012-08-21 08:40
浏览 26
已采纳

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

I have one array stores grade names, with grade value as key and grade name as value:

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

Then, there's another array stores all record of people who gained a grade, with user_id as key and grade value as value:

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

Now I want to count the record under each grade-- grade-1 => 5 users, grade-2=>6 users, in the form like this:

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

I tried this and got errors of Undefined offset:

$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];
    }
}

How to get an result array of counting how many user under each grade?

  • 写回答

2条回答 默认 最新

  • drqn5418 2012-08-21 08:55
    关注

    Sounds like array_count_values() would do the trick.

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

    prints

    Array
    (
        [1] => 0
        [2] => 6
        [3] => 2
        [4] => 9
        [5] => 3
    )
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来