我认为这是一个很长的镜头,但请考虑以下几点:
public function options(array $options = ['route' => '', 'placeholder' => '']) {}
我可以调用此方法,例如:
options(['route' => 'search'])
并将占位符维护为'placeholder' => ''
是否有任何可以将原始$options
数组与新数组合并的内容?
答案 0 :(得分:6)
您可以维护一组默认选项,然后将它们与提供的函数参数合并。
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) ""
}
答案 1 :(得分:0)
Amal Murali的答案也是正确的,但是,在array_merge()的位置,应该考虑使用array_merge_recursive(),以便调用函数时传递的选项不会覆盖默认选项。
例如:
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 );
在getQuiz()中执行print_r($ options)会给出:
array(
conditions' => array(
'id' => '3',
'deleted' => 1
)
)