PHP

PHP Recursive Array Merge

Learn to deeply merge PHP arrays, combining nested elements and intelligently overwriting scalar values. Perfect for robust configurations or complex data aggregation.

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

// Example usage:
$arr1 = ['a' => 1, 'b' => ['c' => 2, 'd' => 3]];
$arr2 = ['a' => 4, 'b' => ['c' => 5, 'e' => 6], 'f' => 7];
$mergedArray = array_merge_recursive_distinct($arr1, $arr2);
print_r($mergedArray);
/* Expected Output:
Array
(
    [a] => 4
    [b] => Array
        (
            [c] => 5
            [d] => 3
            [e] => 6
        )
    [f] => 7
)*/
How it works: This custom function `array_merge_recursive_distinct` provides a more intuitive deep merge than PHP's built-in `array_merge_recursive`. It recursively merges nested arrays, overwriting scalar values from the second array if keys conflict, while preserving unique elements from both. This is crucial for merging configuration files or complex data structures where you want later values to override earlier ones at any depth.

Need help integrating this into your project?

Our team of expert developers can help you build your custom application from scratch.

Hire DigitalCodeLabs