2011-10-31 72 views
-1

如何从a和b获取数组c?组合两个数组的函数?

$arr_a = array(
    'foo' => array(
     'bar' => 1, 
     'baz' => 2, 
    ), 
    'lorem' => array(
     'ipsum' => array(
      'dolor' => 'sit', 
     ), 
    ), 
    'mollis' => 'ultrices', 
); 

与第二阵列是这样的:

$arr_b = array(
    'foo' => array(
     'ante' => 'urna' 
    ), 
    'lorem' => array(
     'ipsum' => array(
      'dolor' => 'turpis' 
     ), 
    ), 
); 

结果阵列应该是:

$arr_c = array(
    'foo' => array(
     'bar' => 1, 
     'baz' => 2, 
     'ante' => 'urna', 
    ), 
    'lorem' => array(
     'ipsum' => array(
      'dolor' => 'turpis', 
     ), 
    ), 
    'mollis' => 'ultrices', 
); 

我特地尝试array_merge但不能得到所希望的结果。 ... Cheers

$arr_c = array_merge_recursive($arr_a, $arr_b); 

给了我不想要的阵列 - 它在这里有点棘手:

Array 
(
    [foo] => Array 
     (
      [bar] => 1 
      [baz] => 2 
      [ante] => urna 
     ) 

    [lorem] => Array 
     (
      [ipsum] => Array 
       (
        [dolor] => Array 
         (
          [0] => sit // unwanted :(
          [1] => turpis 
         ) 

       ) 

     ) 

    [mollis] => ultrices 
) 
+3

你能告诉你试过吗? – NickLH

+0

你读过http://us.php.net/array_merge吗? –

回答

7

我相信你正在寻找的array_merge_recursive()功能。

$arr_c = array_merge_recursive($arr_a, $arr_b); 
+0

谢谢 - 它的作品,但它不会创建阵列C作为例子 - 但我想这是最好的答案 – easyrider

1
$arr_c = array_merge($arr_a, $arr_b); 

OR:

$arr_c = array_merge_recursive($arr_a, $arr_b); 
1
$arr_c = array_merge_recursive($arr_a, $arr_b); 
1

的解决方案是简单的(见CodePad as a proof):

$arr_c = array_merge_recursive($arr_a, $arr_b); 

查看更多文档上array_merge_recursive() PHP function

+0

阵列C不应该有[0] =>坐在 – easyrider

+0

@easyrider:好吧,所以考虑我的答案为回答你的**原始**问题。你的问题的新版本不是一个简单的合并案例,你应该创建你自己的函数。 – Tadeck

0

尝试类似的东西:

<?php 
foreach($arr_b AS $key=>$val) 
{ 
    if(array_key_exists($arr_a, $key)) $arr_a[$key][] = $val; 
} 
?> 

编辑:当我看到我有点太晚了,不知道array_merge_recursive:P