两个二维数组合并
$arr1=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'),
);
$arr2=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-12', 'num' => '7'),
);
怎么去变成
相同userid和data的合并求num的和
$arr1=array(
'0' => array ( 'userId' => 1,'date' => '2011-4-11', 'num' => '11' ),
'1' => array ( 'userId' => 2,'date' => '2011-4-12', 'num' => '6' ),
'2' => array ( 'userId' => 6,'date' => '2011-4-13', 'num' => '8'),
'3' => array ( 'userId' => 3,'date' => '2011-4-13', 'num' => '10'),
'4' => array ( 'userId' => 1,'date' => '2011-4-12', 'num' => '14'),
);
'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'),
);
$arr2=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-12', 'num' => '7'),
);
怎么去变成
相同userid和data的合并求num的和
$arr1=array(
'0' => array ( 'userId' => 1,'date' => '2011-4-11', 'num' => '11' ),
'1' => array ( 'userId' => 2,'date' => '2011-4-12', 'num' => '6' ),
'2' => array ( 'userId' => 6,'date' => '2011-4-13', 'num' => '8'),
'3' => array ( 'userId' => 3,'date' => '2011-4-13', 'num' => '10'),
'4' => array ( 'userId' => 1,'date' => '2011-4-12', 'num' => '14'),
);
作者: dani1984 发布时间: 2011-05-25
笨方法是FOREACH两层 比较USERID和DATE值如果相同就生成把这个NUM相加放到新数组里去。。。。
作者: knless 发布时间: 2011-05-25
这个我试过不行,行为数组2中存在有相同的值
'4' => array ( 'userId' => 1,'date' => '2011-4-12', 'num' => '14'。。。。),
'5' => array ( 'userId' => 1,'date' => '2011-4-12', 'num' => '7'.。。。。),
。。。表示后面还有其他的键值而不能被合并。
'4' => array ( 'userId' => 1,'date' => '2011-4-12', 'num' => '14'。。。。),
'5' => array ( 'userId' => 1,'date' => '2011-4-12', 'num' => '7'.。。。。),
。。。表示后面还有其他的键值而不能被合并。
作者: dani1984 发布时间: 2011-05-25
那也简单 首先和那个新数组里的值比较 如果和新数组里的值相同就跟新数组合并 没有就和另外一个数组合并。。。
作者: knless 发布时间: 2011-05-25
与你上一个问题没有什么区别。
这次写成函数形式
PHP code
Array
(
[0] => Array
(
[userId] => 1
[date] => 2011-4-11
[num] => 11
)
[1] => Array
(
[userId] => 2
[date] => 2011-4-12
[num] => 6
)
[2] => Array
(
[userId] => 6
[date] => 2011-4-13
[num] => 8
)
[3] => Array
(
[userId] => 3
[date] => 2011-4-13
[num] => 10
)
[4] => Array
(
[userId] => 1
[date] => 2011-4-12
[num] => 14
)
)
这次写成函数形式
PHP code
$arr1=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'), ); $arr2=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-12', 'num' => '7'), ); function Finishing() { foreach(func_get_args() as $arr) { if(is_array($arr)) { foreach($arr as $v) { $k = $v['userId'].'_'.$v['date']; if(! isset($r[$k])) $r[$k] = $v; else $r[$k]['num'] += $v['num']; } } } return array_values($r); } print_r(Finishing($arr1, $arr2));
Array
(
[0] => Array
(
[userId] => 1
[date] => 2011-4-11
[num] => 11
)
[1] => Array
(
[userId] => 2
[date] => 2011-4-12
[num] => 6
)
[2] => Array
(
[userId] => 6
[date] => 2011-4-13
[num] => 8
)
[3] => Array
(
[userId] => 3
[date] => 2011-4-13
[num] => 10
)
[4] => Array
(
[userId] => 1
[date] => 2011-4-12
[num] => 14
)
)
作者: xuzuning 发布时间: 2011-05-25
引用 4 楼 xuzuning 的回复:
与你上一个问题没有什么区别。
这次写成函数形式
PHP code
$arr1=array(
'0' => array ( 'userId' => 1,'date' => '2011-4-11', 'num' => '9' ),
'1' => array ( 'userId' => 2,'date' => '2011-4-12', 'num' => '3' ),
'2' => a……
与你上一个问题没有什么区别。
这次写成函数形式
PHP code
$arr1=array(
'0' => array ( 'userId' => 1,'date' => '2011-4-11', 'num' => '9' ),
'1' => array ( 'userId' => 2,'date' => '2011-4-12', 'num' => '3' ),
'2' => a……
学习了!
作者: lazygc520 发布时间: 2011-05-25