我試圖合併一組來自不同對象的數組。可以說,我有這樣的設置:合併多個數組而不覆蓋第一個找到的值
class Base {
static $defaults = array (
'time' => 'DEFAULT',
'color' => 'DEFAULT',
'friend' => 'DEFAULT',
'pub' => 'DEFAULT',
'money' => 'DEFAULT',
);
static function isDefault ($key, $value) {}
$properties;
}
class A extends Base {
function __construct() {
$data = array('time' => '6pm', 'friend' => 'Jack');
$this->properties = array_merge(self::$defaults, $data);
};
class B extends Base {
function __construct() {
$data = array('pub' => 'The Lion', 'friend' => 'Jane');
$this->properties = array_merge(self::$defaults, $data);
};
}
class C extends Base {
function __construct() {
$data = array('money' => 'none', 'pub' => 'Queens');
$this->properties = array_merge(self::$defaults, $data);
};
}
$sequence = array(new A, new B, new C);
我所知道的是,對象是在序列和存在所謂properties
的數組。我想合併這些陣列,使結果如下所示:
array (
'time' => '6pm',
'color' => 'DEFAULT',
'friend' => 'Jack',
'pub' => 'The Lion',
'money' => 'none',
)
我想要第一個沒有默認值存儲。什麼是做這個的快速方法?
什麼是在這種奇怪的方式控制您的設置感?爲什麼你想要新的實例化來改變整個上下文?很難理解(即使你的簡短示例代碼,我需要幾分鐘的時間才能意識到發生了什麼) –
@AlmaDo它是插件系統的一部分,容器需要知道其包含的組中的有效回調。而不是調用每個實例,我想在初始化時構建數組。 – Twifty