Home > Article > Backend Development > 两个二维数组的合并
合并前的数组a:
<code>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) </code>
合并前的数组b:
<code>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) </code>
合并后的数组(合并条件,a的id==b的user_id时合并):
<code>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)</code>
合并前的数组a:
<code>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) </code>
合并前的数组b:
<code>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) </code>
合并后的数组(合并条件,a的id==b的user_id时合并):
<code>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)</code>
array_merge_recursive() 函数与 array_merge() 函数 一样,将一个或多个数组的元素的合并起来,一个数组中的值附加在前一个数组的后面。并返回作为结果的数组。
但是,与 array_merge() 不同的是,当有重复的键名时,值不会被覆盖,而是将多个相同键名的值递归组成一个数组。(参见例子 1)
$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
)
<code>$a = array( array('id'=>'113','email'=>'yintx_1292342352@163.com'), array('id'=>'111','email'=>'yintx_1293456456@163.com'), array('id'=>'109','email'=>'yintx_129@99999.com') ); $b = array( array('user_id'=>'113','count'=>'1'), array('user_id'=>'109','count'=>'8') ); foreach($a as $ka=>$va){ foreach($b as $kb=>$vb){ if($va['id'] == $vb['user_id']){ $a[$ka]['count'] = $vb['count']; } } } var_dump($a); ---------- 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=2) 'id' => string '111' (length=3) 'email' => string 'yintx_1293456456@163.com' (length=24) 2 => array (size=3) 'id' => string '109' (length=3) 'email' => string 'yintx_129@99999.com' (length=19) 'count' => string '8' (length=1)</code>
array_merge_recursive($a, $b);