二维数组合并 关键字

来源:互联网 发布:网络销售公司有些什么 编辑:程序博客网 时间:2024/05/17 22:20

<?php

$arr1 = array(
    '0' => array(
        'userId' => 90183507,
        'date' => 94000.00,
        'num' => '2013-6-14'),
    '1' => array(
        'userId' => 90889536,
        'date' => 900,
        'num' => '2013-6-14'),
    '2' => array(
        'userId' => 90183351,
        'date' => 900,
        'num' => '2013-6-14'),
    '3' => array(
        'userId' => 90172118,
        'date' => 900,
        'num' => '2013-6-14'),
    '4' => array(
        'userId' => 90171857,
        'date' => 9000.00,
        'num' => '2013-6-14'),
     '5' => array(
        'userId' => 90178857,
        'date' => 900.00,
        'num' => '2013-6-14'),
);
$arr2 = array(
    '0' => array(
        'userId' => 90889536,
        'date' => 9400.00,
        'num' => '2013-6-14'),
    '1' => array(
        'userId' => 90183507,
        'date' => 90,
        'num' => '2013-6-14'),
    '2' => array(
        'userId' => 90183351,
        'date' => 90,
        'num' => '2013-6-14'),
    '3' => array(
        'userId' => 90172118,
        'date' => 90,
        'num' => '2013-6-14'),
    '4' => array(
        'userId' => 90171857,
        'date' => 900.00,
        'num' => '2013-6-14'),
    '5' => array(
        'userId' => 90571857,
        'date' => 900.00,
        'num' => '2013-6-15'),
  
);

function arrayMerge(&$array1, &$array2) {
    $num1 = count($array1);
    $num2 = count($array2);
    $newarr = array();
    $m=0;
    for ($i = 0; $i < $num1; $i++) {
        $k = 0;
        for ($j = 0; $j < $num2; $j++) {
            if (!(strcasecmp($array1[$i]['userId'], $array2[$j]['userId']))) {
                $newarr[$i]['userId'] = $array1[$i]['userId'];
                $newarr[$i]['date'] = $array1[$i]['date'] + $array2[$j]['date'];
                $newarr[$i]['num'] = $array1[$i]['num'];
              
                $array2[$j]['userId']=0;
               
                $k = 1;
            }
        }if ($k == 0) {
            $newarr[$i]['userId'] = $array1[$i]['userId'];
            $newarr[$i]['date'] = $array1[$i]['date'];
            $newarr[$i]['num'] = $array1[$i]['num'];
        }
    }
    for($j = 0; $j < $num2; $j++){
        if($array2[$j]['userId']!=0){
            $newarr[$num1+$m]['userId'] = $array2[$j]['userId'];
            $newarr[$num1+$m]['date'] = $array2[$j]['date'];
            $newarr[$num1+$m]['num'] = $array2[$j]['num'];
            $m++;
        }
    }
    return $newarr;
}

$a = arrayMerge($arr1, $arr2);
print_r($a);
?>

 

二维数组合并,通过userid字段进行数组连接,合成新的二维数组。当$arr1,$arr2元素个数不相同,把不能匹配的元素单独添加到新的二维数组中。

 

 

 

输出结果:

Array (

[0] => Array ( [userId] => 90183507 [date] => 94090 [num] => 2013-6-14 )

[1] => Array ( [userId] => 90889536 [date] => 10300 [num] => 2013-6-14 )

 [2] => Array ( [userId] => 90183351 [date] => 990 [num] => 2013-6-14 )

 [3] => Array ( [userId] => 90172118 [date] => 990 [num] => 2013-6-14 )

[4] => Array ( [userId] => 90171857 [date] => 9900 [num] => 2013-6-14 )

[5] => Array ( [userId] => 90178857 [date] => 900 [num] => 2013-6-14 )

[6] => Array ( [userId] => 90571857 [date] => 900 [num] => 2013-6-15 ) )

 

 

参考:http://bbs.csdn.net/topics/360243533

原创粉丝点击