条件に従って 2 次元配列を新しい配列に再生成します
既存の配列
$arr=array(
'0' => 配列 ( 'userId' => 1,'date' => '2011-4-11', 'num' => '2' )、
'1' => 配列 ( 'userId' => 2,'date' => '2011-4-12', 'num' => '3' )、
'2' => 配列 ( 'userId' => 6,'date' => '2011-4-13', 'num' => '4')
'3' => 配列 ( 'userId' => 3,'date' => '2011-4-13', 'num' => '5')
'4' => 配列 ( 'userId' => 1,'date' => '2011-4-11', 'num' => '7')
'5' => 配列 ( 'userId' => 1,'date' => '2011-4-12', 'num' => '7')
);
この配列を
に再計算する方法
同じユーザー ID とデータを組み合わせて、num
の合計を求めます
生成された結果は
です
$arr=array(
'0' => 配列 ( 'userId' => 1,'date' => '2011-4-11', 'num' => '9' )、
'1' => 配列 ( 'userId' => 2,'date' => '2011-4-12', 'num' => '3' )、
'2' => 配列 ( 'userId' => 6,'date' => '2011-4-13', 'num' => '4')
'3' => 配列 ( 'userId' => 3,'date' => '2011-4-13', 'num' => '5')
'4' => 配列 ( 'userId' => 1,'date' => '2011-4-12', 'num' => '7')
);
------解決策---------
$arr=array(
'0' => 配列 ( 'userId' => 1,'date' => '2011-4-11', 'num' => '2' )、
'1' => 配列 ( 'userId' => 2,'date' => '2011-4-12', 'num' => '3' )、
'2' => 配列 ( 'userId' => 6,'date' => '2011-4-13', 'num' => '4')、
'3' => 配列 ( 'userId' => 3,'date' => '2011-4-13', 'num' => '5')、
'4' => 配列 ( 'userId' => 1,'date' => '2011-4-11', 'num' => '7')、
'5' => 配列 ( 'userId' => 1,'date' => '2011-4-12', 'num' => '7')、
);
foreach($arr as $v) {
if(! $r[$v['userId'].'_'.$v['date']])
$r[$v['userId'].'_'.$v['date']] = $v;
それ以外
$r[$v['userId'].'_'.$v['date']]['num'] += $v['num'];
}
print_r(array_values($r));
配列
(
[0] => 配列
(
[userId] => 1
[日付] = & gt; 2011-4-11
[num] =>
)
[1] => 配列
(
[userid] =>
[日付] = & gt; 2011-4-12