code: private function fixPhpFilesArray(array $data): array
      {
          if (!is_array($data)) {
              return $data;
          }
  
          $keys = array_keys($data);
          sort($keys);
  
          if (['error', 'name', 'size', 'tmp_name', 'type'] != $keys || !isset($data['name']) || !is_array($data['name'])) {
              return $data;
          }
  
          $files = $data;
          foreach (['error', 'name', 'size', 'tmp_name', 'type'] as $k) {
              unset($files[$k]);
          }
  
          foreach ($data['name'] as $key => $name) {
              $files[$key] = $this->fixPhpFilesArray(array(
                  'error' => $data['error'][$key],
                  'name' => $name,
                  'type' => $data['type'][$key],
                  'tmp_name' => $data['tmp_name'][$key],
                  'size' => $data['size'][$key],
              ));
          }
  
          return $files;
      }
docs: Fixes a malformed PHP $_FILES array.
  
  PHP has a bug that the format of the $_FILES array differs, depending on
  whether the uploaded file fields had normal field names or array-like
  field names ("normal" vs. "parent[child]").
  
  This method fixes the array to look like the "normal" $_FILES array.
  
  It's safe to pass an already converted array, in which case this method
  just returns the original array unmodified.
  
  @param array $data
  @return array