PHP通过提供较小的数组更新多维数组,覆盖现有的键,但保留其他数据

PHP通过提供较小的数组更新多维数组,覆盖现有的键,但保留其他数据,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,对不起,我的问题太长了。这将更清楚我到底想做什么 请考虑这个相对简单的多维数组 'domain1.com' => array (size=9) 'serverip' => null 'dedicatedip' => null 'username' => null 'password' => null 'web_template' => null 'data

对不起,我的问题太长了。这将更清楚我到底想做什么

请考虑这个相对简单的多维数组

'domain1.com' => 
    array (size=9)
        'serverip' => null
        'dedicatedip' => null
        'username' => null
        'password' => null
        'web_template' => null
        'datacenter' => null
        'unix_time_start' => null
        'is_trial' => null
        'billing' => 
            array (size=2)
                'upgrade' => boolean false
                'vip' => boolean true
'domain2.com' => 
    array (size=9)
        'serverip' => null
        'dedicatedip' => null
        'username' => null
        'password' => null
        'web_template' => null
        'datacenter' => null
        'unix_time_start' => null
        'is_trial' => null
        'billing' => 
            array (size=2)
                'upgrade' => boolean false
                'vip' => boolean true
请注意,第一级键是域名,最后一个值“billing”也是一个数组

我可以使用这个简化的函数使用array\u merge来更新一些信息

function update_domain_details( $domain, $array ) {
    $large = array( ... ) // as above
    $current_large = $large[$domain];
    $large[$domain] = array_merge($current_large, $array );
}

$array = array(
    is_trial => true,
);

update_domain_details('domain1.com', $array );
但我遇到的问题是,当我尝试更新计费子阵列中的任何内容时。对于eg

$array = array(
    'billing' => array('upgrade' => true),
);
这将覆盖整个计费子阵列,我将丢失“vip”值

我已经研究了array\u merge\u recursive,但它只是让我有点困惑

我希望能够将一个数组和域名一起传递到一个函数中,它将在不丢失任何信息的情况下将该数组覆盖在较大的数组之上。任何帮助都将不胜感激

我在上找到一篇博文

简单地用array\u replace\u recursive替换array\u merge似乎已经解决了这个问题