Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从函数参数合并默认数组 我相信这是一个很长的尝试,但是考虑如下: public function options(array $options = ['route' => '', 'placeholder' => '']) {}_Php - Fatal编程技术网

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
  )
)

这里的重要注意事项是,这适用于多维数组,不适用于一维数组:)