code: public static function parseParameters($input)
      {
          if (!is_string($input)) {
              return [];
          }
  
          $pairs = explode('&', $input);
  
          $parameters = [];
          foreach ($pairs as $pair) {
              $split = explode('=', $pair, 2);
              $parameter = Util::urldecodeRfc3986($split[0]);
              $value = isset($split[1]) ? Util::urldecodeRfc3986($split[1]) : '';
  
              if (isset($parameters[$parameter])) {
                  // We have already recieved parameter(s) with this name, so add to the list
                  // of parameters with this name
  
                  if (is_scalar($parameters[$parameter])) {
                      // This is the first duplicate, so transform scalar (string) into an array
                      // so we can add the duplicates
                      $parameters[$parameter] = [$parameters[$parameter]];
                  }
  
                  $parameters[$parameter][] = $value;
              } else {
                  $parameters[$parameter] = $value;
              }
          }
          return $parameters;
      }
docs: This function takes a input like a=b&a=c&d=e and returns the parsed
  parameters like this
  array('a' => array('b','c'), 'd' => 'e')
  
  @param string $input
  
  @return array