Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在PHP中合并两个关联数组?_Php - Fatal编程技术网

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

如何在PHP中合并两个关联数组?,php,Php,我有两个数组,我想把它们合并到一个数组中。我已经添加了两个数组和所需的输出 阵列1: Array ( [0] => Array ( [0] => b561d2e627efd2 [1] => d561d2e627f0cc [2] => f561d2e627f17a [3] => g561d2e627f1d1 ) [1] =&

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

阵列1:

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

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

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
        )
)

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

foreach($array1 as $k=>$v){
    foreach($array2[$k] as $val){
        $array1[$k][] = $val;
    }
}
您可以使用“展平”这些阵列

假设第一个数组名为$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);

简单。迭代第一个数组,获取当前键,使用该键获取第二个数组的块,使用
array\u 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)

您的问题仍然重复。为什么两次被否决?@CodeGodie可能被接受,因为它符合OP的要求-
$array1
将匹配预期输出。我特别提到,这是一种幼稚的方法,不处理重复项或不同长度的数组,但OP从一开始就没有提出这是一项要求。你知道吗。你是对的。我认为
foreach
中的
$array1
变量是另一个变量。我现在将删除我的评论并进行投票。感谢您的反馈。这将不起作用,因为合并需要与第二个数组进行,即
array1[0]
array2[0]