What is the difference between array_replace_recursive() and creating a custom merge function for multidimensional arrays in PHP?

When merging multidimensional arrays in PHP, you can either use the built-in function array_replace_recursive() or create a custom merge function. The main difference is that array_replace_recursive() will recursively merge arrays, replacing values from the first array with values from the second array if they have the same key. On the other hand, creating a custom merge function allows you to have more control over the merging process and customize it according to your specific requirements.

// Using array_replace_recursive()
$array1 = [
    'key1' => 'value1',
    'key2' => [
        'subkey1' => 'subvalue1',
        'subkey2' => 'subvalue2'
    ]
];

$array2 = [
    'key2' => [
        'subkey1' => 'newsubvalue1'
    ]
];

$mergedArray = array_replace_recursive($array1, $array2);

print_r($mergedArray);
```

```php
// Creating a custom merge function
function customMergeArrays($array1, $array2) {
    foreach ($array2 as $key => $value) {
        if (is_array($value) && isset($array1[$key]) && is_array($array1[$key])) {
            $array1[$key] = customMergeArrays($array1[$key], $value);
        } else {
            $array1[$key] = $value;
        }
    }
    return $array1;
}

$array1 = [
    'key1' => 'value1',
    'key2' => [
        'subkey1' => 'subvalue1',
        'subkey2' => 'subvalue2'
    ]
];

$array2 = [
    'key2' => [
        'subkey1' => 'newsubvalue1'
    ]
];

$mergedArray = customMergeArrays($array1, $array2);

print_r($mergedArray);