php数组的排重、累加、排序处理,50分全部送上!解决方法
程序员文章站
2024-02-09 10:15:40
...
php数组的排重、累加、排序处理,50分全部送上!
数组中有很多值是重复的cid,他们对应的hits不一样,希望进行cid排重,hits累加,再按照hits倒序排列,输出结果如下:
多谢大家了!
------解决方案--------------------
- PHP code
$t = array ( array( 'cid' => 123, 'hits' => 200, ), array( 'cid' => 456, 'hits' => 100, ), array( 'cid' => 789, 'hits' => 300, ), array( 'cid' => 123, 'hits' => 600, ), array( 'cid' => 456, 'hits' => 500, ), array( 'cid' => 789, 'hits' => 700, ), );
数组中有很多值是重复的cid,他们对应的hits不一样,希望进行cid排重,hits累加,再按照hits倒序排列,输出结果如下:
- PHP code
$t = array ( array( 'cid' => 789, 'hits' => 1000, ), array( 'cid' => 123, 'hits' => 800, ), array( 'cid' => 456, 'hits' => 600, ), );
多谢大家了!
------解决方案--------------------
- PHP code
foreach($t as $v){ if(!$ar[$v['cid']]) $ar[$v['cid']]=$v; else $ar[$v['cid']]['hits']+=$v['hits']; } foreach($ar as $v) $k[]=$v[hits]; array_multisort($k,SORT_DESC,$ar); print_r($ar);
------解决方案--------------------
- PHP code
$t = array ( array( 'cid' => 123, 'hits' => 200, ), array( 'cid' => 456, 'hits' => 100, ), array( 'cid' => 789, 'hits' => 300, ), array( 'cid' => 123, 'hits' => 600, ), array( 'cid' => 456, 'hits' => 500, ), array( 'cid' => 789, 'hits' => 700, ), ); $r = array(); foreach($t as $v) { if(!isset($r[$v['cid']])) $r[$v['cid']] = $v; else $r[$v['cid']]['hits'] += $v['hits']; } usort($r, create_function('$a,$b', 'return $a["hits"]