数组在构造函数中替换PHP

时间:2011-12-09 11:42:02

标签: php

以下是我的类的示例,我在构造函数中定义了默认选项,我想用所提供的任何选项替换它们。

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

当我打印选项的内容时,我得到默认值而没有任何替换。 我做错了什么?

3 个答案:

答案 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。