示例#1
0
/**
 * Override the values from one array with values from another array
 *
 * @param array $arr1 Base config
 * @param array $arr2 Overriding config
 * @return array
 */
function config_override(array $arr1, array $arr2)
{
    foreach ($arr2 as $key => $value) {
        if (array_key_exists($key, $arr1) and is_array($value) and !array_key_exists(0, $value)) {
            $arr1[$key] = config_override($arr1[$key], $arr2[$key]);
        } else {
            $arr1[$key] = $value;
        }
    }
    return $arr1;
}
示例#2
0
 public function testOverrideArrayValues()
 {
     $defaultConfig = array('one' => 'hello world', 'two' => array('twoA' => array('one', 'two', 'three'), 'other' => 'value'));
     $configOverride = array('one' => 'foo bar', 'two' => array('twoA' => array('four', 'five', 'six')));
     $expected = array('one' => 'foo bar', 'two' => array('twoA' => array('four', 'five', 'six'), 'other' => 'value'));
     $this->assertEquals($expected, config_override($defaultConfig, $configOverride));
 }