public static function configMerge() {
        $result = array();
        $args = func_get_args();
        foreach ($args as $arg) {
            if (!is_array($arg)) {
                continue;
            }
            foreach ($arg as $key => $value) {
                if (is_numeric($key)) {
                    // Renumber numeric keys as array_merge() does.
                    $result[] = $value;
                } elseif (array_key_exists($key, $result) && is_array($result[$key]) && is_array($value)) {
                    // Recurse only when both values are arrays.
                    $result[$key] = ConfigServiceProvider::configMerge($result[$key], $value);
                } else {
                    // Otherwise, use the latter value.
                    $result[$key] = $value;
                }
            }
        }
        return $result;
    }
public static function configMerge() {
        $result = array();
        $args = func_get_args();
        foreach ($args as $arg) {
            if (!is_array($arg)) {
                continue;
            }
            foreach ($arg as $key => $value) {
                if (is_numeric($key)) {
                    // Renumber numeric keys as array_merge() does.
                    $result[] = $value;
                } elseif (array_key_exists($key, $result) && is_array($result[$key]) && is_array($value)) {
                    // Recurse only when both values are arrays.
                    $result[$key] = ConfigServiceProvider::configMerge($result[$key], $value);
                } else {
                    // Otherwise, use the latter value.
                    $result[$key] = $value;
                }
            }
        }
        return $result;
    }
public static function configMerge ( ) { $ result = array ( ) ; $ args = func_get_args ( ) ; foreach ( $ args as $ arg ) { if ( ! is_array ( $ arg ) ) { continue ; } foreach ( $ arg as $ key => $ value ) { if ( is_numeric ( $ key ) ) { // Renumber numeric keys as array_merge() does. $ result [ ] = $ value ; } elseif ( array_key_exists ( $ key , $ result ) && is_array ( $ result [ $ key ] ) && is_array ( $ value ) ) { // Recurse only when both values are arrays. $ result [ $ key ] = ConfigServiceProvider :: configMerge ( $ result [ $ key ] , $ value ) ; } else { // Otherwise, use the latter value. $ result [ $ key ] = $ value ; } } } return $ result ; }
Like array_merge_recursive, but good

@see https://drupal.org/files/issues/array_merge_recursive_sucks.patch
Like array_merge_recursive but good