2017-08-01 223 views
0

我想加入两个数组,其中1个键应该加入它们。PHP合并数组并保留键

array:1 [ 
     0 => array:2 [ 
     "MONAT" => "AUG" 
     "MAIL_CNT" => "2" 
     ] 
    1 => array:2 [ 
     "MONAT" => "JUL" 
     "MAIL_CNT" => "1" 
     ] 
    ] 

    array:2 [ 
     0 => array:2 [ 
     "MONAT" => "AUG" 
     "ORDER_CNT" => "18" 
     ] 
     1 => array:2 [ 
     "MONAT" => "JUL" 
     "ORDER_CNT" => "1" 
     ] 
    ] 

结果应该是这样的

array:1 [ 
     0 => array:2 [ 
     "MONAT" => "AUG" 
     "MAIL_CNT" => "2" 
     "ORDER_CNT" => "18" 
     ] 
    1 => array:2 [ 
     "MONAT" => "JUL" 
     "MAIL_CNT" => "1" 
     "ORDER_CNT" => "1" 
     ] 
    ] 

我无法弄清楚该怎么做。

在此先感谢和问候!

+5

可能重复的[PHP:合并两个数组,同时保留键而不是重新索引?](https://stackoverflow.com/questions/3292044/php-merge-two-arrays-while-keeping-keys-instead-of -reindexing) – Difster

+0

您的关键MONAT应该与两者匹配吗?该条件? – Alice

回答

1

使用array_replace_recursive

$array = array_replace_recursive($a1, $a2); 
+1

令人信服,但如果条件是月份必须匹配和阵列长度不匹配这两个阵列,那么它将失败 – Alice

+0

工程就像一个魅力!我感到有点惭愧,我只是尝试array_replace :-) – WhiteRabbit

0
$mergedArray = array(); 
foreach($arr1 as $key => $row) { 
    $mergedArray[$key] = array_merge($arr2[$key], $row) 
} 

希望这有助于

+0

虽然这种方法没有太多可移动的部分来讨论,但重要的是尝试提供一些答案和答案,并避免仅用于代码的帖子,以便将来的SO读者受到教育。 – mickmackusa

1

你应该使用PHP array_replace_recursive()这个

$arr1=array(
    0 =>array(
     "MONAT" => "AUG", 
     "MAIL_CNT" => "2" 
    ), 
    1 => array(
     "MONAT" => "JUL", 
     "MAIL_CNT" => "1" 
    ) 
); 

$arr2=array(
    0 => array(
     "MONAT" => "AUG", 
     "ORDER_CNT" => "18" 
    ), 
    1 => array(
     "MONAT" => "JUL", 
     "ORDER_CNT" => "1" 
    ) 
); 

$array = array_replace_recursive($arr1, $arr2); 
echo"<pre>"; print_r($array); 
+0

@ jiboulex已经回答说.... – Alice

0

1:简单的使用array_merge

第二:&意味着它是按引用传递的value

foreach($array1 as $key => &$val) { 
    $val = array_merge($val,$array2[$key]); 
} 
print_r($array1); 

注代替:如果both array count是同一否则会抛出错误上面的代码将只工作。