如何在PHP中合并两个关联数组?

时间:2015-10-14 12:29:51

标签: php

我有两个数组,我想将它们合并到一个数组中。我已添加了两个数组以及所需的输出。

数组1:

Array
(
    [0] => Array
        (
            [0] => b561d2e627efd2
            [1] => d561d2e627f0cc
            [2] => f561d2e627f17a
            [3] => g561d2e627f1d1
        )

    [1] => Array
        (
            [0] => b561d2e627f632
            [1] => d561d2e627f71f
            [2] => f561d2e627f7d1
            [3] => g561d2e627f823
        )
)

ARRAY2:

Array
(
    [0] => Array
        (
            [0] => c561d2e627f378
            [1] => e561d2e627f425
            [2] => b561d2e627efd2
        )

    [1] => Array
        (
            [0] => c561d2e627f9ee
            [1] => e561d2e627fa78
            [2] => b561d2e627f632
        )
)

必需输出:

Array
(
    [0] => Array
        (
            [0] => b561d2e627efd2
            [1] => d561d2e627f0cc
            [2] => f561d2e627f17a
            [3] => g561d2e627f1d1
            [4] => c561d2e627f378
            [5] => e561d2e627f425
            [6] => b561d2e627efd2
        )

    [1] => Array
        (
            [0] => b561d2e627f632
            [1] => d561d2e627f71f
            [2] => f561d2e627f7d1
            [3] => g561d2e627f823
            [4] => c561d2e627f9ee
            [5] => e561d2e627fa78
            [6] => b561d2e627f632
        )
)

3 个答案:

答案 0 :(得分:2)

简单。迭代你的第一个数组,获取当前密钥,使用该密钥获取第二个数组的块,使用array_merge合并它们,然后将它们推送到一个新数组。执行以下操作:

$arr1 = array(
    array("one", "two", "three"),
    array("ten", "eleven", "twelve")
);
$arr2 = array(
    array("four", "five", "six"),
    array("thirteen", "fourteen", "fifteen")
);

foreach ($arr1 as $k => $arr1_chunk) {
    $arr2_chunk = $arr2[$k];
    $final[] = array_merge($arr1_chunk, $arr2_chunk);
}
var_dump($final);

<强>结果:

array (size=2)
  0 => 
    array (size=6)
      0 => string 'one' (length=3)
      1 => string 'two' (length=3)
      2 => string 'three' (length=5)
      3 => string 'four' (length=4)
      4 => string 'five' (length=4)
      5 => string 'six' (length=3)
  1 => 
    array (size=6)
      0 => string 'ten' (length=3)
      1 => string 'eleven' (length=6)
      2 => string 'twelve' (length=6)
      3 => string 'thirteen' (length=8)
      4 => string 'fourteen' (length=8)
      5 => string 'fifteen' (length=7)

答案 1 :(得分:0)

你不建议任何需要处理重复值,并且两个数组似乎具有相同数量的第一级元素,因此只需将数组2的内容推送到array1就可以完成这项工作,使用一个简单的嵌套循环:

foreach($array1 as $k=>$v){
    foreach($array2[$k] as $val){
        $array1[$k][] = $val;
    }
}

答案 2 :(得分:-2)

您可以使用array_merge来“压扁”这些数组。

以下是在上面引用的示例中它如何工作,假设第一个数组被称为$ array1而第二个数组被称为array2

$new_array = array_merge($array1[0], $array1[1]);
$new_array2 = array_merge($array2[0], $array2[1]);
print_r($new_array);
print_r($new_array2);