/** * Formats query string * * @param array $params * @param boolean $skip_empty * @param string $separator * @return string */ public static function url_query($params = array(), $skip_empty = false, $separator = '&') { $str = ''; static $stack = array(); foreach ((array) $params as $key => $value) { if ($skip_empty === true && empty($value)) { continue; } array_push($stack, $key); if (is_array($value)) { if (count($value)) { $str .= ($str != '' ? '&' : '') . Util_Environment::url_query($value, $skip_empty, $key); } } else { $name = ''; foreach ($stack as $key) { $name .= $name != '' ? '[' . $key . ']' : $key; } $str .= ($str != '' ? $separator : '') . $name . '=' . rawurlencode($value); } array_pop($stack); } return $str; }