$arr = array(
array('Id' => '1', 'type' => 'app', 'num' =>'1'),
array('Id' => '2', 'type' => 'val', 'num' =>'3'),
array('Id' => '2', 'type' => 'val', 'num' =>'4'),
array('Id' => '3', 'type' => 'org', 'num' =>'5'),
);需要转换成$arr = array(
array('Id' => '1', 'type' => 'app', 'num' =>'1'),
array('Id' => '2', 'type' => 'val', 'num' =>'7'),
array('Id' => '3', 'type' => 'org', 'num' =>'5'),
);
即相同Id和type的数组合并

解决方案 »

  1.   

    $arr = array(
            array('Id' => '1', 'type' => 'app', 'num' =>'1'),
            array('Id' => '2', 'type' => 'val', 'num' =>'3'),
            array('Id' => '2', 'type' => 'val', 'num' =>'4'),
            array('Id' => '3', 'type' => 'org', 'num' =>'5'),
    );$sum = array();
    foreach($arr as $row) {
      $group = $row['Id'] . ',' . $row['type'];
      if(! isset($sum[$group])) $sum[$group] = $row;
      else $sum[$group]['num'] += $row['num'];
    }print_r(array_values($sum));Array
    (
        [0] => Array
            (
                [Id] => 1
                [type] => app
                [num] => 1
            )    [1] => Array
            (
                [Id] => 2
                [type] => val
                [num] => 7
            )    [2] => Array
            (
                [Id] => 3
                [type] => org
                [num] => 5
            ))
      

  2.   

    你可以想想,如果不是数组而是表,那么数据库该怎么做呢?
    select Id, type, sum(num) as num from tbl_name group by Id, type
      

  3.   

    多谢老大指点,其实就是一个group by,写sql的时候没加上。。基础不扎实呀