W3docs

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âmetroDescrição
$separatorA string colocada entre cada elemento. Frequentemente chamada de glue.
$arrayO 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

php— editable, runs on the server

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:

php— editable, runs on the server

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 | admin

Se 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.

Prática

Prática
Qual é o propósito da função implode() no PHP?
Qual é o propósito da função implode() no PHP?
Was this page helpful?