implode($separator, $array) une los valores de un array en una cadena, con $separator entre cada pareja: implode(', ', ['red', 'green', 'blue']) devuelve "red, green, blue".
El separador solo va entre los elementos, nunca antes del primero ni después del último. Es lo contrario de explode(), que divide una cadena en un array.
Sintaxis
implode(string $separator, array $array): string
implode(array $array): string // separator defaults to ""
Primero va el separador. El código antiguo a veces pasaba primero el array, implode($array, ', '). Ese orden quedó obsoleto en PHP 7.4 y se eliminó en PHP 8.0, donde lanza TypeError: implode(): Argument #2 ($array) must be of type ?array, string given.
implode vs join
join() es un alias de implode(). Aceptan los mismos argumentos y devuelven la misma cadena, así que elige uno y sé coherente.
Qué pasa con los números, los booleanos y null
Cada valor se convierte antes en cadena. Los números se imprimen como esperas, true se convierte en "1", y false y null se convierten en cadenas vacías, lo que deja dos separadores seguidos.
implode de un array asociativo
implode() ignora las claves y une solo los valores. Para obtener pares key=value, construye cada trozo con array_map() sobre las claves y los valores, y luego únelos. http_build_query() hace lo mismo para una query string de URL y además codifica los espacios y los caracteres especiales.
El mismo patrón une solo las claves: implode(', ', array_keys($user)). Hay más sobre claves y valores en la página de arrays asociativos.
Unir con un salto de línea o generar una lista HTML
El separador puede ser cualquier cadena. "\n" (entre comillas dobles) pone cada valor en su propia línea, algo útil para archivos de texto y para la salida en la línea de comandos. Con etiquetas HTML como separador, implode() construye una lista en una línea. Ejecuta el siguiente bloque y la pestaña Página muestra la lista renderizada.
Escapar cada valor con htmlspecialchars() antes de unir evita que un valor como <b> se convierta en marcado.
Unir con "y" antes del último elemento
Una lista legible para personas suele necesitar "y" antes del último elemento. Sácalo, une el resto y vuelve a añadirlo:
Error frecuente: arrays anidados
implode() trabaja con un solo nivel. Un elemento que es a su vez un array se convierte en la palabra Array, y PHP imprime un warning:
<?php
echo implode(', ', ['red', ['orange', 'yellow']]);
Warning: Array to string conversion in /home/index.php on line 2
red, Array
Aplana antes los arrays interiores, o une cada uno por separado:
Preguntas frecuentes
¿Qué hace implode() en PHP?
Une los valores de un array en una cadena, poniendo el separador entre ellos: implode(', ', ['a', 'b', 'c']) devuelve "a, b, c". Es lo contrario de explode().
¿Cuál es la diferencia entre implode() y join()?
Ninguna. join() es un alias de implode(): mismos argumentos, mismo resultado. implode() es el nombre que verás en la mayoría del código.
¿Cómo hago implode de un array asociativo con sus claves?
implode() solo usa los valores. Para incluir las claves, construye antes los trozos: implode(', ', array_map(fn($k, $v) => "$k=$v", array_keys($a), $a)). Para una query string de URL, http_build_query($a) lo hace en una llamada.
¿Por qué implode() da un TypeError en PHP 8?
Porque los argumentos están en el orden antiguo. implode($array, ', ') quedó obsoleto en PHP 7.4 y se eliminó en PHP 8.0. Escribe primero el separador: implode(', ', $array).
¿Cómo convierto un array en una cadena separada por comas en PHP?
implode(',', $array). Usa ', ' como separador si quieres un espacio después de cada coma. Para un archivo CSV, usa fputcsv(), que además pone entre comillas los valores que contienen comas.