两个二维数组的合并
合并前的数组a:
array (size=3)
0 =>
array (size=2)
'id' => string '113' (length=3)
'email' => string 'yintx_1292342352@163.com' (length=24)
1 =>
array (size=2)
'id' => string '111' (length=3)
'email' => string 'yintx_1293456456@163.com' (length=24)
2 =>
array (size=2)
'id' => string '109' (length=3)
'email' => string 'yintx_129@99999.com' (length=19)
合并前的数组b:
array (size=2)
0 =>
array (size=2)
'user_id' => string '113' (length=2)
'count' => string '1' (length=1)
1 =>
array (size=2)
'user_id' => string '109' (length=2)
'count' => string '8' (length=1)
合并后的数组(合并条件,a的id==b的user_id时合并):
array (size=3)
0 =>
array (size=3)
'id' => string '113' (length=3)
'email' => string 'yintx_1292342352@163.com' (length=24)
'count' => string '1' (length=1)
1 =>
array (size=3)
'id' => string '111' (length=3)
'email' => string 'yintx_1293456456@163.com' (length=24)
'count' => string '0' (length=1)
2 =>
array (size=3)
'id' => string '109' (length=3)
'email' => string 'yintx_129@99999.com' (length=19)
'count' => string '8' (length=1)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
array_merge_recursive() 函数与 array_merge() 函数 一样,将一个或多个数组的元素的合并起来,一个数组中的值附加在前一个数组的后面。并返回作为结果的数组。
但是,与 array_merge() 不同的是,当有重复的键名时,值不会被覆盖,而是将多个相同键名的值递归组成一个数组。(参见例子 1)
<?php
$a1=array("a"=>"Horse","b"=>"Dog");
$a2=array("c"=>"Cow","b"=>"Cat");
print_r(array_merge_recursive($a1,$a2));
?>
输出:
Array (
[a] => Horse
[b] => Array ( [0] => Dog [1] => Cat )
[c] => Cow
)
数组A($arrA)
数组B($arrB)
数组C($arrC)
你的需求没有现成的函数可以满足,倒是可以使用array_walk()来遍历重组:
例如:
实现!
另外:执行:array_replace_recursive($arrA,$arrB)得到:
执行:array_replace_recursive($arrA,$arrC)得到:
提供一个不使用循环的办法
array_merge_recursive($a, $b);
array_merge_recursive
, 需要注意的是此函数合并的是相同的键名,而需求是合并相同的id, 所以首先要把id提取出来作为键名, 其次此函数只合并相同的字符串键名,所以还需要把键名转换为字符串,然后就可以使用array_merge_recursive
合并了。