implode($separator, $array) assemble les valeurs d'un tableau en une seule chaîne, avec $separator entre chaque paire : implode(', ', ['red', 'green', 'blue']) renvoie "red, green, blue".
Le séparateur se place uniquement entre les éléments, jamais avant le premier ni après le dernier. C'est l'inverse d'explode(), qui découpe une chaîne en tableau.
Syntaxe
implode(string $separator, array $array): string
implode(array $array): string // separator defaults to ""
Le séparateur vient en premier. Du code ancien passait parfois le tableau en premier, implode($array, ', '). Cet ordre a été déprécié en PHP 7.4 et supprimé en PHP 8.0, où il lève TypeError: implode(): Argument #2 ($array) must be of type ?array, string given.
implode ou join
join() est un alias d'implode(). Elles prennent les mêmes arguments et renvoient la même chaîne, choisissez-en donc une et tenez-vous-y.
Ce que deviennent les nombres, les booléens et null
Chaque valeur est d'abord convertie en chaîne. Les nombres s'affichent comme prévu, true devient "1", et false et null deviennent des chaînes vides, ce qui laisse deux séparateurs à la suite.
implode sur un tableau associatif
implode() ignore les clés et n'assemble que les valeurs. Pour obtenir des paires key=value, construisez chaque morceau avec array_map() sur les clés et les valeurs, puis assemblez. http_build_query() fait la même chose pour une query string d'URL et encode aussi les espaces et caractères spéciaux.
Le même modèle assemble seulement les clés : implode(', ', array_keys($user)). Les clés et valeurs sont détaillées sur la page des tableaux associatifs.
Assembler avec un saut de ligne ou construire une liste HTML
Le séparateur peut être n'importe quelle chaîne. "\n" (entre guillemets doubles) met chaque valeur sur sa propre ligne, pratique pour des fichiers texte et la sortie en ligne de commande. Avec des balises HTML comme séparateur, implode() construit une liste en une ligne. Exécutez le bloc suivant et l'onglet Page affiche la liste rendue.
Échapper chaque valeur avec htmlspecialchars() avant l'assemblage empêche une valeur comme <b> de devenir du balisage.
Assembler avec « et » avant le dernier élément
Une liste lisible demande en général « et » avant le dernier élément. Retirez-le, assemblez le reste, puis rajoutez-le :
Erreur fréquente : les tableaux imbriqués
implode() travaille sur un seul niveau. Un élément qui est lui-même un tableau est converti en mot Array, et PHP affiche un warning :
<?php
echo implode(', ', ['red', ['orange', 'yellow']]);
Warning: Array to string conversion in /home/index.php on line 2
red, Array
Aplatissez d'abord les tableaux intérieurs, ou assemblez chacun séparément :
Questions fréquentes
Que fait implode() en PHP ?
Elle assemble les valeurs d'un tableau en une seule chaîne, en plaçant le séparateur entre elles : implode(', ', ['a', 'b', 'c']) renvoie "a, b, c". C'est l'inverse d'explode().
Quelle est la différence entre implode() et join() ?
Aucune. join() est un alias d'implode() : mêmes arguments, même résultat. implode() est le nom que vous verrez dans la plupart du code.
Comment faire un implode d'un tableau associatif avec ses clés ?
implode() n'utilise que les valeurs. Pour inclure les clés, construisez d'abord les morceaux : implode(', ', array_map(fn($k, $v) => "$k=$v", array_keys($a), $a)). Pour une query string d'URL, http_build_query($a) le fait en un seul appel.
Pourquoi implode() donne-t-elle une TypeError en PHP 8 ?
Parce que les arguments sont dans l'ancien ordre. implode($array, ', ') a été déprécié en PHP 7.4 et supprimé en PHP 8.0. Écrivez le séparateur en premier : implode(', ', $array).
Comment convertir un tableau en chaîne séparée par des virgules en PHP ?
implode(',', $array). Utilisez ', ' comme séparateur si vous voulez un espace après chaque virgule. Pour un fichier CSV, utilisez fputcsv(), qui met aussi entre guillemets les valeurs contenant des virgules.