PHP array to query string

When sending get request to third party server, you need to add query string of data into url. Some request accept request to text format, means you need to pass data into url query string. You may already have PHP array or object which you want to pass as payload. In this situation, you need to convert array or object into query string.

In this article, we will show you how you can convert array into query string. PHP has built-in function http_build_query which convert array or object into URL-encoded query string.

Syntax:

http_build_query($data, $numeric_prefix, $separator, $encoding);

Parameters:

$data required array or object which you want to convert
$numeric_prefix optional string prefix on numeric key
$separator optional parameter seperator instead of default &
$encoding optional encoding type default PHP_QUERY_RFC1738

Example:

<?php

$user = [
    'name' => 'Jitesh Meniya',
    'email' => '[email protected]',
    'twitter' => 'Jiteshmeniya',
    'github' => 'jiteshmeniya'
];

$data = http_build_query($user);

echo($data); // name=Jitesh+Meniya&email=jiteshmeniya99%40gmail.com&twitter=Jiteshmeniya&github=jiteshmeniya

If you need indexed array to be query string with prefixed or comma seperated string, here is the example:

<?php

$user = [
    '1' => 'Jitesh Meniya',
    '2' => '[email protected]',
    '3' => 'Jiteshmeniya',
    '4' => 'jiteshmeniya'
];

$data = http_build_query($user, 'param_', ',');

echo($data); // param_1=Jitesh+Meniya,param_2=jiteshmeniya99%40gmail.com,param_3=Jiteshmeniya,param_4=jiteshmeniya

If you want to use your own custom logic or working on PHP 4, here is the custom function to do same result as above:

<?php

$user = [
    'name' => 'Jitesh Meniya',
    'email' => '[email protected]',
    'twitter' => 'Jiteshmeniya',
    'github' => 'jiteshmeniya'
];

/**
 * Builds an http query string
 * 
 * @param array
 * @return string
 */
function httpbuildQuery($query, $seperator = '&') {

    $query_array = [];

    foreach($query as $key => $key_value) {
        $query_array[] = urlencode($key) . '=' . urlencode($key_value);
    }

    return implode($seperator, $query_array);
}

$data = httpbuildQuery($user);

echo($data); // name=Jitesh+Meniya&email=jiteshmeniya99%40gmail.com&twitter=Jiteshmeniya&github=jiteshmeniya

I hope it will help you.

Tags: