$arr=array();
$arr[0]=array('ID'=>'A','Num'=>100);
$arr[1]=array('ID'=>'B','Num'=>200);
$arr[2]=array('ID'=>'A','Num'=>300);
$arr[3]=array('ID'=>'B','Num'=>400);
$arr[4]=array('ID'=>'C','Num'=>500);算法之后的结果为
$arr=array(array('ID'=>'A','Num'=>400),array('ID'=>'A','Num'=>600),array('ID'=>'A','Num'=>500));

解决方案 »

  1.   


    $arr=array();
    $arr[0]=array('ID'=>'A','Num'=>100);
    $arr[1]=array('ID'=>'B','Num'=>200);
    $arr[2]=array('ID'=>'A','Num'=>300);
    $arr[3]=array('ID'=>'B','Num'=>400);
    $arr[4]=array('ID'=>'C','Num'=>500);$tmp = array();
    foreach ($arr as $v)
    {
    if(isset($tmp[$v['ID']]))
    {
    $tmp[$v['ID']]['Num'] += $v['Num'];
    }
    else 
    {
    $tmp[$v['ID']]['ID'] += $v['ID'];
    $tmp[$v['ID']]['Num'] += $v['Num'];
    }
    }
    $arr = array_values($tmp);
    print_r($arr);
      

  2.   

    else里的+=换成=号
    $arr=array();
    $arr[0]=array('ID'=>'A','Num'=>100);
    $arr[1]=array('ID'=>'B','Num'=>200);
    $arr[2]=array('ID'=>'A','Num'=>300);
    $arr[3]=array('ID'=>'B','Num'=>400);
    $arr[4]=array('ID'=>'C','Num'=>500);$tmp = array();
    foreach ($arr as $v)
    {
    if(isset($tmp[$v['ID']]))
    {
    $tmp[$v['ID']]['Num'] += $v['Num'];
    }
    else 
    {
    $tmp[$v['ID']]['ID'] = $v['ID'];
    $tmp[$v['ID']]['Num'] = $v['Num'];
    }
    }
    $arr = array_values($tmp);
    print_r($arr);
      

  3.   

    $arr=array(array('ID'=>'A','Num'=>400),array('ID'=>'B','Num'=>600),array('ID'=>'C','Num'=>500));
    才对吧? ID相同的累加?
      

  4.   

    $arr=array();
    $arr[0]=array('ID'=>'A','Num'=>100);
    $arr[1]=array('ID'=>'B','Num'=>200);
    $arr[2]=array('ID'=>'A','Num'=>300);
    $arr[3]=array('ID'=>'B','Num'=>400);
    $arr[4]=array('ID'=>'C','Num'=>500);foreach( $arr as $v)
    {
    $newArray[$v['ID']] = array('ID'=>$v['ID'],'Num'=>$newArray[$v['ID']]['Num'] + $v['Num']);
    }
    echo "<pre/>";
    print_r(array_values($newArray));
      

  5.   

    $result = array();
    foreach ($arr as $key=>$val){
       $akey = $val['ID'];
       if(!isset($result[$akey])) $result[$akey] = $val['Num'];
       else $result[$akey] += $val['Num'];
    }
    print_r($result);
      

  6.   

    老大们 我要的是这种
    自己写的
    $t=array_diff($arr,array());for($i=0;$i<count($arr);$i++)
    {
    $k=$arr[$i];
    for($j=$i+1;$j<count($arr);$j++)
    {
    if($k["ID"]==$arr[$j]["ID"])
    {
    $t[$i]["Num"]+=$arr[$j]["Num"];
    unset($t[$j]);
    }
    }
    }
    print_r($t);//Array ( [0] => Array ( [ID] => A [Num] => 400 ) [1] => Array ( [ID] => B [Num] => 600 ) [4] => Array ( [ID] => C [Num] => 500 ) ) 
    php数组复制的函数是什么?$t=array_diff($arr,array());
      

  7.   

    没必要foreach两次吧?
    $arr=array();
    $arr[0]=array('ID'=>'A','Num'=>100);
    $arr[1]=array('ID'=>'B','Num'=>200);
    $arr[2]=array('ID'=>'A','Num'=>300);
    $arr[3]=array('ID'=>'B','Num'=>400);
    $arr[4]=array('ID'=>'C','Num'=>500);foreach( $arr as $k=>$v)
    {
    if(!isset($keys[$v['ID']]))
    {
    $keys[$v['ID']] = $k;
    }
    $newArray[$keys[$v['ID']]] = array('ID'=>$v['ID'],'Num'=>$newArray[$keys[$v['ID']]]['Num'] + $v['Num']);
    }
    echo "<pre/>";
    print_r($newArray);