两个二维数组的合并

WBOY
WBOYオリジナル
2016-06-06 20:28:292377ブラウズ

合并前的数组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);

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。