Home > Article > Backend Development > How PHP uses http_build_query() to construct a URL string_php tips
The example in this article describes how PHP uses http_build_query() to construct a URL string. Share it with everyone for your reference, the details are as follows:
To put it simply, http_build_query() converts an array into the parameter string after the url question mark?, and automatically performs urlencode processing.
Let’s quote the official explanation:
http_build_query
http_build_query -- Generate the request string description string after url-encoded http_build_query (array formdata [, string numeric_prefix] )
Generate a url-encoded request string using the given associative (or subscripted) array. The parameter formdata can be an array or an object containing properties. A formdata array can be a simple one-dimensional structure, or it can be an array of arrays (which in turn can contain other arrays). If numeric subscripts are used in the underlying array and the numeric_prefix parameter is given, this parameter value will be used as the prefix for the numeric subscript elements in the underlying array. This is to allow PHP or other CGI programs to obtain valid variable names when decoding the data later.
Let’s look at some simple examples:
$data = array( 'foo'=>'bar', 'baz'=>'boom', 'site'=>'www.nowamagic.net', 'name'=>'nowa magic'); echo http_build_query($data); /* output foo=bar&baz=boom&cow=milk&php=hypertext+processor */
What if it is a mixed array of index array and associative array?
$data = array( 'foo', 'bar', 'site'=>'www.nowamagic.net', 'name'=>'nowa magic'); echo http_build_query($data); /* output 0=foo&1=bar&site=www.nowamagic.net&name=nowa+magic */
It automatically adds numeric index.
http_build_query also has a parameter that can prefix the numeric index. Let’s try again:
$data = array( 'foo', 'bar', 'site'=>'www.nowamagic.net', 'name'=>'nowa magic'); echo http_build_query($data, "nm_"); /* output nm_0=foo&nm_1=bar&site=www.nowamagic.net&name=nowa+magic */
What about a more complex array? For example, a two-dimensional array or something.
$data = array( 'user'=>array('name'=>'Bob Smith', 'age'=>47, 'sex'=>'M', 'dob'=>'5/12/1956'), 'pastimes'=>array('golf', 'opera', 'poker', 'rap'), 'children'=>array('bobby'=>array('age'=>12,'sex'=>'M'), 'sally'=>array('age'=>8,'sex'=>'F')), 'CEO');
The output result is:
user%5Bname%5D=Bob+Smith&user%5Bage%5D=47&user%5Bsex%5D=M&user%5Bdob%5D=5%2F12%2F1956 &pastimes%5B0%5D=golf&pastimes%5B1%5D=opera&pastimes%5B2%5D=poker &pastimes%5B3%5D=rap&children%5Bbobby%5D%5Bage%5D=12&children%5Bbobby%5D%5Bsex%5D=M &children%5Bsally%5D%5Bage%5D=8&children%5Bsally%5D%5Bsex%5D=F&0=CEO
Wrapped for readability:
user[name]=Bob+Smith&user[age]=47&user[sex]=M&user[dob]=5%1F12%1F1956& pastimes[0]=golf&pastimes[1]=opera&pastimes[2]=poker&pastimes[3]=rap& children[bobby][age]=12&children[bobby][sex]=M&children[sally][age]=8& children[sally][sex]=F&flags_0=CEO
Note: Only the numeric subscript element "CEO" in the basic array has obtained the prefix. Other numeric subscript elements (such as elements under pastimes) do not need to be prefixed for legal variable names.
Not only arrays, but also objects can be converted into URL strings:
class myClass { var $foo; var $baz; function myClass() { $this->foo = 'bar'; $this->baz = 'boom'; } } $data = new myClass(); echo http_build_query($data);
At the end, let’s mention a few more functions that you may need to know when searching for http_build_query:
1. parse_str: Convert the parameters following a url? into an array, array parse_str(url, arr).
2. parse_url: Parse a complete url into an array, array parse_url (string url).
3. http_build_query: Let’s briefly explain, convert an array into a url? The following parameter string will be automatically processed by urlencode, string http_build_query (array formdata [, string numeric_prefix]), the following parameter string is not specified in the array Keys or keys are subscripted for numbers.
Readers who are interested in more PHP-related content can check out the special topics on this site: "Summary of PHP operations and operator usage", "Summary of PHP network programming skills", " Introductory tutorial on PHP basic syntax", "Summary of PHP office document operation skills (including word, excel, access, ppt)", "Summary of PHP date and time usage》, "php object-oriented programming introductory tutorial", "php string (string) usage summary", "php mysql database operation introductory tutorial" And "Summary of common database operation skills in PHP"
I hope this article will be helpful to everyone in PHP programming.