code: private function arrayMergeDeep(array $array1, array $array2): array
      {
          $result = [];
          foreach (\func_get_args() 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_int($key)) {
                      $result[] = $value;
                  } elseif (isset($result[$key]) && \is_array($result[$key]) && \is_array($value)) {
                      // Recurse when both values are arrays.
                      $result[$key] = $this->arrayMergeDeep($result[$key], $value);
                  } else {
                      // Otherwise, use the latter value, overriding any previous value.
                      $result[$key] = $value;
                  }
              }
          }
  
          return $result;
      }
docs: Merge arrays, deeply.