implode($separator, $array) junta os valores de um array numa string, com $separator entre cada par: implode(', ', ['red', 'green', 'blue']) retorna "red, green, blue".
O separador só vai entre os elementos, nunca antes do primeiro nem depois do último. É o inverso do explode(), que divide uma string em array.
Sintaxe
implode(string $separator, array $array): string
implode(array $array): string // separator defaults to ""
O separador vem primeiro. Código antigo às vezes passava o array primeiro, implode($array, ', '). Essa ordem foi depreciada no PHP 7.4 e removida no PHP 8.0, onde lança TypeError: implode(): Argument #2 ($array) must be of type ?array, string given.
implode ou join
join() é um alias de implode(). Eles recebem os mesmos argumentos e retornam a mesma string, então escolha um e seja consistente.
O que acontece com números, booleanos e null
Cada valor é convertido em string primeiro. Números aparecem como você espera, true vira "1", e false e null viram strings vazias, o que deixa dois separadores seguidos.
implode de um array associativo
O implode() ignora as chaves e junta só os valores. Para ter pares key=value, monte cada parte com array_map() sobre as chaves e os valores e depois junte. O http_build_query() faz o mesmo para uma query string de URL e também codifica espaços e caracteres especiais.
O mesmo padrão junta só as chaves: implode(', ', array_keys($user)). Mais sobre chaves e valores na página sobre arrays associativos.
Juntar com quebra de linha ou montar uma lista HTML
O separador pode ser qualquer string. "\n" (aspas duplas) coloca cada valor numa linha própria, o que é prático para arquivos de texto e saída na linha de comando. Com tags HTML como separador, o implode() monta uma lista numa linha. Rode o próximo bloco e a aba Page mostra a lista renderizada.
Escapar cada valor com htmlspecialchars() antes de juntar impede que um valor como <b> vire marcação.
Juntar com "e" antes do último item
Uma lista legível para pessoas normalmente precisa de "e" antes do último elemento. Tire o último com pop, junte o resto e depois adicione-o de volta:
Erro comum: arrays aninhados
O implode() trabalha com um nível. Um elemento que é ele mesmo um array é convertido na palavra Array, e o PHP imprime um aviso:
<?php
echo implode(', ', ['red', ['orange', 'yellow']]);
Warning: Array to string conversion in /home/index.php on line 2
red, Array
Achate os arrays internos antes, ou junte cada um separadamente:
Perguntas frequentes
O que faz o implode() no PHP?
Ele junta os valores de um array numa string, colocando o separador entre eles: implode(', ', ['a', 'b', 'c']) retorna "a, b, c". É o oposto do explode().
Qual a diferença entre implode() e join()?
Nenhuma. join() é um alias de implode(): mesmos argumentos, mesmo resultado. implode() é o nome que você vai ver na maior parte do código.
Como faço implode de um array associativo com as chaves?
O implode() usa só os valores. Para incluir as chaves, monte as partes antes: implode(', ', array_map(fn($k, $v) => "$k=$v", array_keys($a), $a)). Para uma query string de URL, http_build_query($a) faz isso numa chamada.
Por que o implode() dá TypeError no PHP 8?
Porque os argumentos estão na ordem antiga. implode($array, ', ') foi depreciado no PHP 7.4 e removido no PHP 8.0. Escreva o separador primeiro: implode(', ', $array).
Como converto um array numa string separada por vírgulas no PHP?
implode(',', $array). Use ', ' como separador se quiser um espaço depois de cada vírgula. Para um arquivo CSV, use fputcsv(), que também coloca entre aspas os valores que contêm vírgulas.