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参考文档在这里