implode()
Artigo sobre a função PHP implode(), usada para unir elementos de um array em uma string com um separador. Útil para trabalhar com arrays e strings.
A função implode() do PHP une os elementos de um array em uma única string, colocando um separador (o glue) entre cada elemento. É a função ideal para quando você tem uma lista de valores e precisa de uma única string — uma lista separada por vírgulas, um caminho de URL, uma linha CSV ou uma cláusula SQL IN (...). É o inverso exato de explode(), que divide uma string de volta em um array.
Esta página abrange a sintaxe, o valor de retorno e os casos que costumam confundir: o glue opcional, arrays associativos, arrays vazios e como valores não string são convertidos.
Sintaxe
implode(string $separator, array $array): string
implode(array $array): string // legacy: separator defaults to ""| Parâmetro | Descrição |
|---|---|
$separator | A string colocada entre cada elemento. Frequentemente chamada de glue. |
$array | O array de valores a unir. |
Valor de retorno: uma única string contendo todos os elementos do array unidos por $separator, na ordem em que se encontram.
A função nunca altera o array original — ela retorna uma nova string.
Um exemplo básico
Cada elemento é unido com um único espaço, produzindo:
Hello World !Usando um separador diferente
O glue pode ser qualquer string, não apenas um único caractere. Aqui unimos com um hífen:
Saída:
Hello-World-!Um uso prático comum é construir uma lista separada por vírgulas para exibição ou para uma consulta:
<?php
$ids = [4, 7, 12, 19];
echo 'WHERE id IN (' . implode(', ', $ids) . ')';
// WHERE id IN (4, 7, 12, 19)
?>Unindo um array associativo
implode() ignora as chaves completamente e une apenas os valores, na ordem de inserção:
<?php
$user = ['id' => 1, 'name' => 'Sam', 'role' => 'admin'];
echo implode(' | ', $user);
?>Saída:
1 | Sam | adminSe você precisar das chaves também (por exemplo id=1&name=Sam), use http_build_query() ou array_map() sobre as chaves — implode() sozinha não consegue vê-las.
Casos extremos e armadilhas
Array vazio. Unir um array vazio sempre retorna uma string vazia, independentemente do separador:
<?php
echo '[' . implode(', ', []) . ']'; // []
?>Valores não string são convertidos para string. Números, booleanos e null são convertidos usando as regras normais de string do PHP — o que pode surpreender: true se torna "1", enquanto false e null se tornam "" (uma string vazia):
<?php
echo implode(', ', [1, 2.5, true, null, 'x']);
// 1, 2.5, 1, , x
?>Se você quiser filtrar null/false, passe o array por array_filter() antes de unir.
O separador é opcional. Chamar implode($array) sem glue concatena os valores diretamente. Passar o separador primeiro é recomendado para legibilidade:
<?php
echo implode(['a', 'b', 'c']); // abc
?>Antes do PHP 8.0 os dois argumentos podiam ser fornecidos em qualquer ordem (
implode($array, $glue)). Esse comportamento histórico foi removido no PHP 8.0 — sempre passe o separador primeiro.
implode() vs explode()
implode() e explode() são operações espelhadas: uma constrói uma string a partir de um array, a outra reconstrói o array a partir da string.
<?php
$csv = implode(',', ['red', 'green', 'blue']); // "red,green,blue"
$back = explode(',', $csv); // ['red', 'green', 'blue']
?>join() é simplesmente um alias de implode() — as duas são intercambiáveis. Veja join() e explode() para mais informações.