php - 将 "Defaults"数组与 "Input"数组合并? PHP 哪个函数?

标签 php arrays merge overwrite

假设您要让用户提供信息。

Array 1

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

Array 2

PHP 是否有一个函数可以覆盖 Array 2 的所有数组值,这取决于它们是否在 Array 1 中提供且不为空?

最佳答案

我认为您正在寻找的是 array_replace_recursive,尤其是当您的“默认值”可能是一个深度超过一层的关联数组时。

$finalArray = array_replace_recursive(数组 $defaults, 数组 $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
}

php.net引用文档是here

关于php - 将 "Defaults"数组与 "Input"数组合并? PHP 哪个函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16391848/

相关文章:

c++ - 如何制作一个大小为变量的数组?

java - 反转 ArrayList 的顺序并合并两个 ArrayList

php - 如何让 javascript 读取 php 文件的输出

php - 广告列表未显示在 PHP 中

php - 返回 HTTP 405 的 CORS 预检请求

c - 数组数据指向另一个数组中的另一个位置

php - 动态 PHP 数组结构

list - Prolog统一和优化

php - 重组数组以将元素从第三个位置连接到数组末尾并存储为第三个元素

php - 使用 cURL 登录,然后使用 cURL 发出另一个请求