PHP implode associative array

Photo from Unsplash

The PHP implode() function is used to join array values as a string.

This function only takes the array values as the string, so any key you define in an associative array will be ignored.

Consider the following example:

<?php

$user = [
    "name" => "Nathan",
    "age" => 29,
    "hobby" => "reading",
];

print "The values are: " . implode(", ", $user);

The print output will be:

The values are: Nathan, 29, reading

Suppose you need the keys to be included in the output like this:

The values are: name=Nathan, age=29, hobby=reading

Then you can’t use the implode() function. Instead, you need to use the http_build_query() to generate a string from the array.

Here’s how you use http_build_query() to implode an associative array:

<?php

$user = [
    "name" => "Nathan",
    "age" => 29,
    "hobby" => "reading",
];

$string = http_build_query($user, "", ", ");

print $string;

The $string above will have the following output:

name=Nathan, age=29, hobby=reading

But keep in mind that the http_build_query() function will encode any special characters found in your string.

Alternatively, you can create a custom function that implodes an array as key-value pairs.

Here’s the function to help you create key-value pairs from an array:

function implode_key_value($separator, $array, $symbol = "=") {
    return implode(
        $separator,
        array_map(
            function ($k, $v) use ($symbol) {
                return $k . $symbol . $v;
            },
            array_keys($array),
            array_values($array)
        )
    );
}

The implode_key_value() function above accept three parameters:

  • The $separator for the imploded array
  • The $array to implode
  • The $symbol to separate the key-value pair

This function will call the implode() function on an array processed using the array_map() function.

The array_map function above creates a single dimension array from the associative array you passed as its parameter.

Run the following script to test the function:

<?php

function implode_key_value($separator, $array, $symbol = "=") {
    return implode(
        $separator,
        array_map(
            function ($k, $v) use ($symbol) {
                return $k . $symbol . $v;
            },
            array_keys($array),
            array_values($array)
        )
    );
}

$user = [
    "name" => "Nathan",
    "age" => 29,
    "hobby" => "reading",
];

print implode_key_value(", ", $user, " => ");

The output will be as follows:

name => Nathan, age => 29, hobby => reading

Now you’ve learned how to implode an associative array in PHP. Nice work!

The easiest way to implode an associative array is to call the http_build_query() function.

But if you need to format the imploded string or avoid encoding special characters, then you need to create a custom function, such as the implode_key_value() function shown above.

Feel free to use the function in your project. 👍

Get 98 PHP Snippets Book for FREE 🔥

98 PHP snippets that you can use in various scenarios

Save 1000+ hours of research and 10x your productivity