function __http_build_query($array, $name)
 {
     $tmp = array();
     foreach ($array as $key => $value) {
         if (is_array($value)) {
             array_push($tmp, __http_build_query($value, sprintf('%s[%s]', $name, $key)));
         } elseif (is_scalar($value)) {
             array_push($tmp, sprintf('%s[%s]=%s', $name, urlencode($key), urlencode($value)));
         } elseif (is_object($value)) {
             array_push($tmp, __http_build_query(get_object_vars($value), sprintf('%s[%s]', $name, $key)));
         }
     }
     return implode('&', $tmp);
 }
 function __http_build_query($array, $name)
 {
     $tmp = array();
     foreach ($array as $key => $value) {
         if (is_array($value)) {
             array_push($tmp, __http_build_query($value, sprintf('%s[%s]', $name, $key)));
         } elseif (is_scalar($value)) {
             array_push($tmp, sprintf('%s[%s]=%s', $name, urlencode($key), urlencode($value)));
         } elseif (is_object($value)) {
             array_push($tmp, __http_build_query(get_object_vars($value), sprintf('%s[%s]', $name, $key)));
         }
     }
     // Argument seperator
     $separator = ini_get('arg_separator.output');
     return implode($separator, $tmp);
 }