Menu

PHP implode(): juntar elementos de um array numa string

implode(', ', $array) junta os valores de um array numa string com um separador entre eles. Veja implode com chaves, arrays associativos, como montar listas HTML e a diferença entre implode e join.

Esta página tem editores executáveis - edite, execute e veja a saída na hora.

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.

Ilustração das linguagens de programação do Coddy

Aprenda a programar com o Coddy

COMEÇAR