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;

}

posted on 2013-04-27 19:03  一根烟的寂寞  阅读(1064)  评论(0)    收藏  举报

导航