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; } $arr1 = ['a' => 1, 'b' => ['x' => 10, 'y' => 20], 'c' => 3]; $arr2 = ['b' => ['y' => 25, 'z' => 30], 'd' => 4]; // Example usage: // $result = array_merge_recursive_distinct($arr1, $arr2); /* Expected result: [ 'a' => 1, 'b' => [ 'x' => 10, 'y' => 25, 'z' => 30 ], 'c' => 3, 'd' => 4 ] */