Heim > Backend-Entwicklung > PHP-Tutorial > 将二维数组从新按条件重新生成新数组

将二维数组从新按条件重新生成新数组

WBOY
Freigeben: 2016-06-13 12:59:41
Original
987 Leute haben es durchsucht

将二维数组重新按条件重新生成新数组
现有数组
$arr=array(
'0' => array ( 'userId' => 1,'date' => '2011-4-11', 'num' => '2' ),   
'1' => array ( 'userId' => 2,'date' => '2011-4-12', 'num' => '3' ),   
'2' => array ( 'userId' => 6,'date' => '2011-4-13', 'num' => '4')  
'3' => array ( 'userId' => 3,'date' => '2011-4-13', 'num' => '5')   
'4' => array ( 'userId' => 1,'date' => '2011-4-11', 'num' => '7')
'5' => array ( 'userId' => 1,'date' => '2011-4-12', 'num' => '7')      
);
如何将这个数组重新计算生成为
相同userid和data的合并求num的和
生成结果为
$arr=array(
'0' => array ( 'userId' => 1,'date' => '2011-4-11', 'num' => '9' ),   
'1' => array ( 'userId' => 2,'date' => '2011-4-12', 'num' => '3' ),   
'2' => array ( 'userId' => 6,'date' => '2011-4-13', 'num' => '4')  
'3' => array ( 'userId' => 3,'date' => '2011-4-13', 'num' => '5')   
'4' => array ( 'userId' => 1,'date' => '2011-4-12', 'num' => '7')      
);
------解决方案--------------------
$arr=array(
'0' => array ( 'userId' => 1,'date' => '2011-4-11', 'num' => '2' ),   
'1' => array ( 'userId' => 2,'date' => '2011-4-12', 'num' => '3' ),   
'2' => array ( 'userId' => 6,'date' => '2011-4-13', 'num' => '4'),   
'3' => array ( 'userId' => 3,'date' => '2011-4-13', 'num' => '5'),   
'4' => array ( 'userId' => 1,'date' => '2011-4-11', 'num' => '7'),
'5' => array ( 'userId' => 1,'date' => '2011-4-12', 'num' => '7'),   
);
foreach($arr as $v) {
  if(! $r[$v['userId'].'_'.$v['date']])
    $r[$v['userId'].'_'.$v['date']] = $v;
  else
    $r[$v['userId'].'_'.$v['date']]['num'] += $v['num'];
}
print_r(array_values($r));

Array
(
    [0] => Array
        (
            [userId] => 1
            [date] => 2011-4-11
            [num] => 9
        )

    [1] => Array
        (
            [userId] => 2
            [date] => 2011-4-12

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage