Php 从函数参数合并默认数组 我相信这是一个很长的尝试,但是考虑如下: public function options(array $options = ['route' => '', 'placeholder' => '']) {}
我是否可以调用此方法,例如:Php 从函数参数合并默认数组 我相信这是一个很长的尝试,但是考虑如下: public function options(array $options = ['route' => '', 'placeholder' => '']) {},php,Php,我是否可以调用此方法,例如: options(['route' => 'search']) 并将占位符维护为'placeholder'=>'' 是否有任何东西可以将原始的$options数组与新数组合并?您可以维护一个默认选项数组,然后将它们与提供的函数参数合并 function options(array $options = []) { $defaults = ['route' => '', 'placeholder' => '']; $options
options(['route' => 'search'])
并将占位符维护为'placeholder'=>''
是否有任何东西可以将原始的
$options
数组与新数组合并?您可以维护一个默认选项数组,然后将它们与提供的函数参数合并
function options(array $options = [])
{
$defaults = ['route' => '', 'placeholder' => ''];
$options = array_merge($defaults, $options);
// ...
}
options(['route' => 'search']);
现在,以下所有措施都将起作用:
options(['route' => 'search']);
options(['route' => 'search', 'placeholder' => 1]);
options();
输出:
array(2) {
["route"]=>
string(6) "search"
["placeholder"]=>
string(0) ""
}
array(2) {
["route"]=>
string(6) "search"
["placeholder"]=>
int(1)
}
array(2) {
["route"]=>
string(0) ""
["placeholder"]=>
string(0) ""
}
Amal Murali的答案也是正确的,但是,在ArayaMyGe()的位置上,应该考虑使用默认选项,而不是在调用函数时传递的选项覆盖。p> 例如:
function getQuiz(array $options) {
$default = array(
'conditions' => array(
'deleted' => 0
)
);
$options = array_merge_recursive(
$default,
$options
);
print_r($options);
}
然后像这样称呼它:
$options = array(
'conditions' => array(
'id'=>1
)
);
getQuiz( $options );
在GetQuike()中进行打印($options)会得到:
array(
conditions' => array(
'id' => '3',
'deleted' => 1
)
)
这里的重要注意事项是,这适用于多维数组,不适用于一维数组:)