php 处理多个数组相同值相加
在项目中遇到了从数据查询除统计数据之后,由于 是分表存储的,所以数据要进行合并
<?php
header("content-type:text/html;charset=gbk");
$array1 = array(
array(
'cnt'=>'1',
'day'=>'2013-04-11',
),
array(
'cnt'=>'3',
'day'=>'2013-04-12',
),
array(
'cnt'=>'3',
'day'=>'2012-04-18',
),
);
$array2 = array(
array(
'cnt'=>'2',
'day'=>'2013-04-11',
),
array(
'cnt'=>'3',
'day'=>'2013-04-12',
),
array(
'cnt'=>'3',
'day'=>'2013-04-13',
),
array(
'cnt'=>'10000',
'day'=>'2009-04-13',
),
);
echo '<pre>' ;
print_r($array1);
echo '<hr>' ;
echo '<pre>' ;
print_r($array2);
echo '最后的结果是:' ;
$last = array(
array(
'cnt'=>'2',
'day'=>'2013-04-11',
),
array(
'cnt'=>'6',
'day'=>'2013-04-12',
),
array(
'cnt'=>'3',
'day'=>'2012-04-18',
),
array(
'cnt'=>'3',
'day'=>'2013-04-13',
),
);
echo '<pre>';
print_r($last);
$a = filterArray($array1,$array2);
echo '<pre>' ;
print_r($a);
function filterArray () {
$arg = func_get_args();
if(count($arg) < 2) return false;
$list = array();
foreach($arg[0] as $item1) {
foreach($arg[1] as $item2) {
if($item1['day'] == $item2['day']) {
$list[] = array('cnt' => $item1['cnt'] + $item2['cnt'], 'day' => $item1['day']);
}
}
}
if(!empty($list)) {
$tmpArray = array_merge($arg[0], $arg[1]);
$tmp = array();
foreach($tmpArray as $k => $v) {
$tmp[$v['day']][] = $v;
}//把日期当成数组的索引
foreach($tmp as $key => $val) {
if(count($val) <= 1) {//就是没有相同的,单独的数组
$list[] = $val[0];
}
}
}
return $list;
}
浙公网安备 33010602011771号