Merge “Defaults” array with “Input” array? PHP Which Function?

后端 未结 5 1890
野的像风
野的像风 2021-02-14 15:43

Lets say you are having a user provide information.

Array 1

But not all is required. So you have defaults.

Array 2
         


        
5条回答
  •  孤城傲影
    2021-02-14 16:19

    I think what you are looking for is array_replace_recursive, especially for the case when your "defualts" may be an associative array more than one level deep.

    $finalArray = array_replace_recursive(array $defaults, array $inputOptions)

    heres an example that takes an optional array of options to a function and does some processing based on the result of those options "opts" and the defaults which you specify:

    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
    }
    

    The php.net reference document is here

提交回复
热议问题