function merge($arr_a,$arr_b)
{
$count_b = count ( $arr_b );
foreach ( $arr_a as $a )
{
$flag = 0;
for($i = 0; $i < $count_b; $i ++)
{
if ($a ['id'] == $arr_b [$i] ['id'])
{
//相同id就合并
$arr_b [$i] ['sum'] += $a ['sum'];
break;
} else
{
//计算标志
$flag ++;
}
}
//如果标志等于数组b,即为不相同的id,加入数组b
if ($flag == $count_b)
{
$arr_b [] = $a;
}
}
return $arr_b;
}
测试:
$arr_a = array (
array (
'id' => 'a',
'sum' => 10
),
array (
'id' => 'c',
'sum' => 10
),
array (
'id' => 'e',
'sum' => 10
)
);
$arr_b = array (
array (
'id' => 'b',
'sum' => 1
),
array (
'id' => 'a',
'sum' => 1
),
array (
'id' => 'c',
'sum' => 1
),
array (
'id' => 'd',
'sum' => 1
)
);
echo '数组a:';
print_r ( $arr_a );
echo '<br>';
echo '数组b:';
print_r ( $arr_b );
echo '<br>';
echo '返回数组:';
print_r ( merge ( $arr_a, $arr_b ) );
结果:
数组a:Array (
[0] => Array ( [id] => a [sum] => 10 )
[1] => Array ( [id] => c [sum] => 10 )
[2] => Array ( [id] => e [sum] => 10 )
)
数组b:Array (
[0] => Array ( [id] => b [sum] => 1 )
[1] => Array ( [id] => a [sum] => 1 )
[2] => Array ( [id] => c [sum] => 1 )
[3] => Array ( [id] => d [sum] => 1 )
)
返回数组:Array (
[0] => Array ( [id] => b [sum] => 1 )
[1] => Array ( [id] => a [sum] => 11 )
[2] => Array ( [id] => c [sum] => 11 )
[3] => Array ( [id] => d [sum] => 1 )
[4] => Array ( [id] => e [sum] => 10 )
)