Heim  >  Artikel  >  Backend-Entwicklung  >  php数组的排重、累加、排序处理,50分全部送上!解决方法

php数组的排重、累加、排序处理,50分全部送上!解决方法

WBOY
WBOYOriginal
2016-06-13 13:37:30889Durchsuche

php数组的排重、累加、排序处理,50分全部送上!

PHP code
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->
$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
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->
$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);
<br><font color="#e78608">------解决方案--------------------</font><br>
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"]
                 
              
              
        
            
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel: mysql有关问题 Nächster Artikel: root 改了密码异常