function array_merge_deep_array($arrays) { $result = array(); foreach ($arrays as $array) { foreach ($array as $key => $value) { // Recurse when both values are arrays. if (isset($result[$key]) && is_array($result[$key]) && is_array($value)) { $result[$key] = array_merge_deep_array(array($result[$key], $value)); } else { $result[$key] = $value; } } } return $result; }
function arrayMergeDeepArray($arrays) { $result = []; foreach ($arrays as $array) { foreach ($array as $key => $value) { // Renumber integer keys as array_merge_recursive() does. Note that PHP // automatically converts array keys that are integer strings (e.g., '1') // to integers. if (is_integer($key)) { $result[] = $value; } elseif (isset($result[$key]) && is_array($result[$key]) && is_array($value)) { // Recurse when both values are arrays. $result[$key] = array_merge_deep_array(array($result[$key], $value)); } else { // Otherwise, use the latter value, overriding any previous value. $result[$key] = $value; } } } return $result; }
/** * Helper attaches children onto menu */ private function attach_link(&$menu_structure, $menu_depth_stack, $link_obj) { $merge_arr = []; $this->insert_deep($merge_arr, $menu_depth_stack, $link_obj); $menu_structure = array_merge_deep_array([$menu_structure, $merge_arr]); }