合并两个数组,找到重复键和更新值

时间:2016-03-03 11:08:56

标签: php arrays loops

我有两个数组,其中新数组锁定旧数组中的重复键,并用新数组中的值替换该值,

旧数组

 Array
(
    [tool_situs] => Array
        (
            [template] => aa
            [title] => bb

        )

 [style] => Array
        (
            [.title] => Array
                (
                    [color] => red
                    [font-size] => 20px

                )

        )

)

和新数组

 Array
(
    [tool_situs] => Array
        (
            [title] => ddd
        )

    [style] => Array
        (
            [.title] => Array
                (
                    [color] => #fff

                )

        )

)

我已经尝试使用array_merge_recursive()但不替换重复键的值,只添加新数组的新值

 Array
(
    [tool_situs] => Array
        (
            [template] => aa
            [title] => Array
            (
                [0] => aa
                [1] => ddd
            )

        )

 [style] => Array
        (
            [.title] => Array
                (
                    [color] => Array
                    (
                        [0] => red
                        [1] => #fff
                    )
                    [font-size] => 20px

                )

        )

)

在数组ebove中, tool_situs-> title 仅从新数组中添加新数组,同时 style-> .title-> color 返回添加新值来自ne array。

帮助我如何同时使用tool_situs-> title和style-> .title->颜色替换为这个新数组的值

我会这样出来:

 Array
(
    [tool_situs] => Array
        (
            [template] =>aa
            [title] => ddd
        )

    [style] => Array
        (
            [.title] => Array
                (
                    [color] => #fff
                    [font-size] => 20px
                )

        )

)

2 个答案:

答案 0 :(得分:0)

array_replace_recursive就是您所需要的。

$array1 = your_first_array();
$array2 = your_second_array();

$result = array_replace_recursive($array1, $array2);

var_dump($result); //result array is same as what you've shown as output in your question.

答案 1 :(得分:0)

正如人们所说,你想要使用array_replace_recursive()以下内容应该有效:

$updatedStyles = array_replace_recursive($currentStyles, $newStyles);

这对我来说会输出以下数组:

Array
(
    [tool_situs] => Array
        (
            [template] => aa
            [title] => ddd
        )

    [style] => Array
        (
            [title] => Array
                (
                    [color] => blue
                    [font-size] => 20px
                )

        )

)

可以找到有关函数here的更多信息,您可以找到一个有效的示例here