$a=array(1=>array{"name"=>"张三", "score"=>"7"},
         2=>array{"name"=>"李四", "score"=>"3"},
         3=>array{"name"=>"王五", "score"=>"6"},
         4=>array{"name"=>"刘六", "score"=>"9"},
         5=>array{"name"=>"张三", "score"=>"2"},
         6=>array{"name"=>"李四", "score"=>"8"}
);
比如我现在有这样一个数组,我想做到张三李四的score都叠加,去掉重复项目,然后按score在递减排序该怎么弄?最终变成类似于这样$a=array(1=>array{"name"=>"李四", "score"=>"11"},
         2=>array{"name"=>"张三", "score"=>"9"},        
         3=>array{"name"=>"刘六", "score"=>"9"},
         4=>array{"name"=>"王五", "score"=>"6"}
);

解决方案 »

  1.   

    重复相加就用循环吧 
    排序
    function orderScore($x,$y)
    {
      if($x['score']==$y['score']){return 0;}
      if($x['score']>$y['score']){return 1;}
      if($x['score']<$y['score']){return -1;}
    }
    ursort($a,'orderScore');我的思路,不知道对不对。、
      

  2.   

    $a=array(1=>array("name"=>"张三", "score"=>"7"),
             2=>array("name"=>"李四", "score"=>"3"),
             3=>array("name"=>"王五", "score"=>"6"),
             4=>array("name"=>"刘六", "score"=>"9"),
             5=>array("name"=>"张三", "score"=>"2"),
             6=>array("name"=>"李四", "score"=>"8")
    );$r = array();
    foreach($a as $v) {
      if(isset($r[$v['name']])) $r[$v['name']]['score'] += $v['score'];
      else $r[$v['name']] = $v;
    }
    print_r($r);
    Array
    (
        [张三] => Array
            (
                [name] => 张三
                [score] => 9
            )    [李四] => Array
            (
                [name] => 李四
                [score] => 11
            )    [王五] => Array
            (
                [name] => 王五
                [score] => 6
            )    [刘六] => Array
            (
                [name] => 刘六
                [score] => 9
            ))
      

  3.   

    可否再详细点  ursort是什么函数? 我不是很懂。希望不吝赐教,非常感谢。
      

  4.   

    <?php
    $a=array(1=>array("name"=>"张三", "score"=>"7"),
             2=>array("name"=>"李四", "score"=>"3"),
             3=>array("name"=>"王五", "score"=>"6"),
             4=>array("name"=>"刘六", "score"=>"9"),
             5=>array("name"=>"张三", "score"=>"2"),
             6=>array("name"=>"李四", "score"=>"8")
    );
    $count = count($a);$r = array();//新数组用来存入a的值foreach($a as $v) {
      if(isset($r[$v['name']])) $r[$v['name']]['score'] += $v['score'];
      else $r[$v['name']] = $v;
    }$a = $r;function orderScore($x,$y)
    {
      if($x['score']==$y['score']){return 0;}
      if($x['score']>$y['score']){return -1;}
      if($x['score']<$y['score']){return 1;}
    }
    usort($a,'orderScore');
    print_r($a);
    ?> 借用二楼的方法,高手很多啊,鸭梨很大。。
    完整代码.....