将"Defaults"数组与"Input"数组合并?PHP哪个功能?

Ora*_*555 9 php arrays merge overwrite

假设您有一个用户提供信息.

Array 1
Run Code Online (Sandbox Code Playgroud)

但并非所有都是必需的.所以你有默认值.

Array 2
Run Code Online (Sandbox Code Playgroud)

PHP是否有一个函数,Array 2如果它们被提供Array 1,它们将覆盖所有基于的数组值,而不是空的?

Aug*_*ner 19

我不确定这些答案中的任何一个都会帮助你(他们没有帮助我),尤其是当你的"defualts"可能是一个超过一个级别的关联数组时.

我认为你在寻找的是array_replace_recursive.
$finalArray = array_replace_recursive(array $defaults, array $inputOptions)

下面是一个示例,它为函数提供了一个可选的选项数组,并根据这些选项的结果进行了一些处理opts,defaults以及您指定的选项:

function do_something() {
    $args = func_get_args();
            $opts = $args[0] ? $args[0] : array();

    $defaults = array(
        "second_level" => array(
                    "key1" => "val1",
                    "key2" => "val2"
                ),
        "key1" => "val1",
        "key2" =>  "val2",
        "key3" => "val3"
    );

    $params = array_replace_recursive($defaults, $opts);
    // do something with these merged parameters
}
Run Code Online (Sandbox Code Playgroud)

php.net参考文档在这里