3v4l.org

run code in 300+ PHP versions simultaneously
<?php function mergeDeepArray(array $arrays, $preserve_integer_keys = FALSE) { $result = []; foreach ($arrays as $array) { foreach ($array as $key => $value) { // Renumber integer keys as array_merge_recursive() does unless // $preserve_integer_keys is set to TRUE. Note that PHP automatically // converts array keys that are integer strings (e.g., '1') to integers. if (is_int($key) && !$preserve_integer_keys) { $result[] = $value; } // Recurse when both values are arrays. elseif (isset($result[$key]) && is_array($result[$key]) && is_array($value)) { $result[$key] = mergeDeepArray([$result[$key], $value], $preserve_integer_keys); } // Otherwise, use the latter value, overriding any previous value. else { $result[$key] = $value; } } } return $result; } $a = [['foo' => [2,3]], ['foo' => [4, 5]]]; print_r(mergeDeepArray($a)['foo']); $a = [['foo' => new ArrayObject([2,3])], ['foo' => new ArrayObject([4, 5])]]; print_r((array)mergeDeepArray($a)['foo']);

preferences:
68.36 ms | 402 KiB | 5 Q