以下是我的类的示例,我在构造函数中定义了默认选项,我想用所提供的任何选项替换它们。
class Class{
private $options;
function __construct($options=null){
$this->options = array('option1'=>'value', 'option2'=>'value', ...);
array_replace(_recursive)($this->options,$options);
}
function showOpts(){
print_r($this->options);
}
}
$opt = array('newOpt'=>value ..);
$c = new Class($opt);
$c->showOpts();
当我打印选项的内容时,我得到默认值而没有任何替换。 我做错了什么?
答案 0 :(得分:2)
因为array_replace_recursive返回结果数组。
您应将结果分配给$ this-> options
答案 1 :(得分:2)
您忘记使用数组方法结果设置options变量。
function __construct($options=null){
$this->options = array('option1'=>'value', 'option2'=>'value', ...);
$this->options = array_replace_recursive($this->options,$options);
}
答案 2 :(得分:1)
防弹:
function __construct($options = array()){
$this->options = array('option1'=>'value', 'option2'=>'value', ...);
$new_options = array_replace($this->options, $options);
if ($new_options)
$this->options = $new_options;
}
功能定义:
array array_replace ( array &$array , array &$array1 [, array &$... ] )
返回一个数组,如果发生错误则返回NULL。