How can foreach loops be effectively utilized to merge multidimensional arrays in PHP without losing data or creating extra levels?

When merging multidimensional arrays in PHP using foreach loops, it's important to handle nested arrays properly to avoid losing data or creating extra levels. One way to achieve this is by recursively iterating through the arrays and merging them without creating additional nested levels. This can be done by checking if each element is an array and recursively merging it if so.

function mergeArrays($array1, $array2) {
    foreach ($array2 as $key => $value) {
        if (is_array($value) && isset($array1[$key]) && is_array($array1[$key])) {
            $array1[$key] = mergeArrays($array1[$key], $value);
        } else {
            $array1[$key] = $value;
        }
    }
    return $array1;
}

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

$array2 = [
    'key2' => [
        'subkey2' => 'subvalue2'
    ],
    'key3' => 'value3'
];

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

print_r($mergedArray);