合并两个数组,替换相同键的值

时间:2017-07-03 05:58:53

标签: php arrays multidimensional-array

我有两个数组

First Array

(
    [0] => Array
        (
            [352] => 1
            [128] => 
            [64] => 
            [70] => 2
        )
)

第二个数组是这样的:

Array
(
    [0] => Array
        (
            [128] => 1.5
        )
)

我想制作这样的最终数组。(我希望在此示例中将匹配存储到主数组中 128 - > 1.5 )我该怎么做。?

Array
(
    [0] => Array
        (
            [352] => 1
            [128] => 1.5
            [64] =>  
            [70] => 2
        )

)

这是我的数组变量:

print_r($listskilssresult);
print_r($listskilssresultmatching);

5 个答案:

答案 0 :(得分:7)

您需要使用array_replace_recursive

$listskilssresult = [
    [
        352 => 1,
        128 => '',
        64  => '',
        70  => 2
    ]
];

$listskilssresultmatching = [
    [
        128 => 1.5
    ]
];


print_r(array_replace_recursive($listskilssresult, $listskilssresultmatching));

打印:

Array
(
    [0] => Array
        (
            [352] => 1
            [128] => 1.5
            [64] => 
            [70] => 2
        )

)

了解array_replace_recursivearray_merge_recursive here

之间的区别

答案 1 :(得分:2)

对于此解决方案,您必须使用array_merge()内置的php函数。

语法:

$finalArray =   array_merge($array1, $array2);
print_r($finalArray)

示例:

$array1 = array("color" => "red", 2, 4);
$array2 = array("a", "b", "color" => "green", "shape" => "trapezoid", 4);
$result = array_merge($array1, $array2);
print_r($result);

输出

Array
(
    [color] => green
    [0] => 2
    [1] => 4
    [2] => a
    [3] => b
    [shape] => trapezoid
    [4] => 4
)

参考:http://php.net/manual/en/function.array-merge.php

答案 2 :(得分:1)

array_merge会为你完成这项工作:

array_merge($listskilssresult,$listskilssresultmatching)

答案 3 :(得分:1)

这是针对您的问题的。如果您想要更自动化的东西,您可以创建一个功能。但这会做你想要的:

@Dependent

如果没有找到匹配项(来自foreach语句),最后一个if语句会将第二个数组中的键+值添加到第一个数组中。如果您只想添加匹配的密钥,则可以删除该条件。

答案 4 :(得分:0)

array_replace_recursive是最好的解决方案!

$old_array = Array('my_index1' => Array('1' => 'A', '2' => 'B'), 'my_index2' => Array('1' => 'C', '2' => 'D'));
$new_array = Array('my_index2' => Array('2' => 'Z'));
$result = array_replace_recursive($old_array, $new_array);

//Result : Array('my_index1' => Array('1' => 'A', '2' => 'B'), 'my_index2' => Array('1' => 'C', '2' => 'Z'));
相关问题