php合并两个二维数组,如果两个二维数组的id值相等,则合并为一个新的数组?

数组一:
Array
(
[0] => Array
(
[id] => 1
[name] => test
)
[1] => Array
(
[id] => 2
[name] => test2
)
[2] => Array
(
[id] => 3
[name] => test3
)
)
数组二:
Array
(
[0] => Array
(
[id] => 1
[subject] => subject
)
[1] => Array
(
[id] => 3
[subject] => subject3
)
)

合并后的数组三:
Array
(
[0] => Array
(
[id] => 1
[name] => test
[subject] => subject
)
[1] => Array
(
[id] => 2
[name] => test2
)
[2] => Array
(
[id] => 3
[name] => test3
[subject] => subject3
)
)

id本应该是唯一性的键值,利用好就行。以下输出没有对id排序,因为觉得没必要。
需要时可以再排。
function mergeById(&$a,&$b){
$c=array();
foreach($a as $e) $c[$e['id']]=$e;
foreach($b as $e) $c[$e['id']]=isset($c[$e['id']])? $c[$e['id']]+$e : $e;
return $c;
}
$a=//数组一;
$b=//数组二;
var_dump(mergeById($b,$a));
===========
array
1 =>
array
'id' => int 1
'name' => string 'test' (length=4)
'subject' => string 'subject' (length=7)
2 =>
array
'id' => int 2
'name' => string 'test2' (length=5)
3 =>
array
'id' => int 3
'name' => string 'test3' (length=5)
'subject' => string 'subject3' (length=8)
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-10-30
<?php $arr5=array("a","b","c"); $arr5=array("c","d","e"); $myarray=array_merge($arr1,$arr1); print_r($myarray); $myarray=array_unique($myarray); print_r($myarray); ?>gСcㄔ◥k{圈yq
相似回答