PHP function to build query string from array

PHP function to build query string from array

Youre looking for http_build_query().

Heres a simple php4-friendly implementation:

/**
* Builds an http query string.
* @param array $query  // of key value pairs to be used in the query
* @return string       // http query string.
**/
function build_http_query( $query ){

    $query_array = array();

    foreach( $query as $key => $key_value ){

        $query_array[] = urlencode( $key ) . = . urlencode( $key_value );

    }

    return implode( &, $query_array );

}

PHP function to build query string from array

Just as addition to @thatjuans answer.
More compatible PHP4 version of this:

if (!function_exists(http_build_query)) {
    if (!defined(PHP_QUERY_RFC1738)) {
        define(PHP_QUERY_RFC1738, 1);
    }
    if (!defined(PHP_QUERY_RFC3986)) {
        define(PHP_QUERY_RFC3986, 2);
    }
    function http_build_query($query_data, $numeric_prefix = , $arg_separator = &, $enc_type = PHP_QUERY_RFC1738)
    {
        $data = array();
        foreach ($query_data as $key => $value) {
            if (is_numeric($key)) {
                $key = $numeric_prefix . $key;
            }
            if (is_scalar($value)) {
                $k = $enc_type == PHP_QUERY_RFC3986 ? urlencode($key) : rawurlencode($key);
                $v = $enc_type == PHP_QUERY_RFC3986 ? urlencode($value) : rawurlencode($value);
                $data[] = $k=$v;
            } else {
                foreach ($value as $sub_k => $val) {
                    $k = $key[$sub_k];
                    $k = $enc_type == PHP_QUERY_RFC3986 ? urlencode($k) : rawurlencode($k);
                    $v = $enc_type == PHP_QUERY_RFC3986 ? urlencode($val) : rawurlencode($val);
                    $data[] = $k=$v;
                }
            }
        }
        return implode($arg_separator, $data);
    }
}

Leave a Reply

Your email address will not be published. Required fields are marked *