PHP - URL http_build_query() Function



The PHP URL http_build_query() function is used to generate a URL-encoded query string from an associative (or indexed) array provided. This function is very helpful when you need to create URLs with query parameters.

Syntax

Below is the syntax of the PHP URL http_build_query() function −

string http_build_query( 
   mixed $query_data [, string $numeric_prefix [, string $arg_separator [, 
      int $enc_type = PHP_QUERY_RFC1738 ]]
   ] 
)

Parameters

Below are the parameters of the http_build_query() function −

  • $query_data − It is an array or a query string that you want to convert.

  • $numeric_prefix − It is the prefix to add to numeric keys in the query string.

  • $arg_separator − It is the separator for using between arguments in the query string. Default value is "&"

  • $enc_type − It is the encoding type. Default value is PHP_QUERY_RFC1738.

Return Value

The http_build_query() function returns a URL-encoded string.

PHP Version

First introduced in core PHP 5 the http_build_query() function continues to function easily in PHP 7, and PHP 8.

Example 1

Here is basic example of the PHP URL http_build_query() function to generate a URL encoded string from the given array.

<?php
   $data = array(
      "foo" => "bar",
      "baz" => "boom",
      "cow" => "milk",
      "php" => "hypertext processor"
   );

   echo http_build_query($data) . "\n";
   echo http_build_query($data, '', '&');
?>

Output

The above code will result something like this −

foo=bar&baz=boom&cow=milk&php=hypertext+processor
foo=bar&baz=boom&cow=milk&php=hypertext+processor

Example 2

This example demonstrates how to handle arrays that have both numeric and associative keys using the http_build_query() method. It also shows how to prefix keys with numbers.

<?php
   $data = array("foo", "bar", "baz", "boom", "cow" => "milk", "php" => "hypertext processor");

   echo http_build_query($data) . "\n";
   echo http_build_query($data, 'myvar_');
?>

Output

After running the above program, it generates the following output −

0=foo&1=bar&2=baz&3=boom&cow=milk&php=hypertext+processor
myvar_0=foo&myvar_1=bar&myvar_2=baz&myvar_3=boom&cow=milk&php=hypertext+processor

Example 3

This example shows how to use nested arrays, which represent complex data structures, with the http_build_query() function.

<?php
   $data = array(
      "user" => array(
         "name" => "Amit Sharma",
         "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"
   );
   echo http_build_query($data, "flags_");
?>

Output

This will generate the below output −

user%5Bname%5D=Amit+Sharma&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&flags_0=CEO

Example 4

This challenging example shows how http_build_query() function handles objects with public, protected, and private properties.

<?php
   class parentClass {
      public $pub = "publicParent";
      protected $prot = "protectedParent";
      private $priv = "privateParent";
      public $pub_bar = Null;
      protected $prot_bar = Null;
      private $priv_bar = Null;

      public function __construct(){
         $this->pub_bar  = new childClass();
         $this->prot_bar = new childClass();
         $this->priv_bar = new childClass();
      }
   }
   class childClass {
      public $pub = "publicChild";
      protected $prot = "protectedChild";
      private $priv = "privateChild";
   }
   $parent = new parentClass();
   echo http_build_query($parent);
?>

Output

When the above program is executed, it will produce the below output −

pub=publicParent&pub_bar%5Bpub%5D=publicChild
php_function_reference.htm
Advertisements