implode()
Notre article porte sur la fonction PHP implode(), utilisée pour joindre les éléments d'un tableau en une chaîne. Très utile pour les tableaux et chaînes.
La fonction implode() de PHP joint les éléments d'un tableau en une seule chaîne de caractères, en plaçant un séparateur (la colle) entre chaque élément. C'est la fonction à utiliser chaque fois que vous avez une liste de valeurs et que vous avez besoin d'une seule chaîne — une liste séparée par des virgules, un chemin d'URL, une ligne CSV ou une clause SQL IN (...). C'est l'exact inverse de explode(), qui divise une chaîne en un tableau.
Cette page couvre la syntaxe, la valeur de retour et les cas qui posent problème : la colle optionnelle, les tableaux associatifs, les tableaux vides et la conversion des valeurs non-chaînes.
Syntaxe
implode(string $separator, array $array): string
implode(array $array): string // legacy: separator defaults to ""| Paramètre | Description |
|---|---|
$separator | La chaîne placée entre chaque élément. Souvent appelée la colle. |
$array | Le tableau de valeurs à joindre. |
Valeur de retour : une seule chaîne contenant tous les éléments du tableau joints par $separator, dans leur ordre d'origine.
La fonction ne modifie jamais le tableau original — elle retourne une nouvelle chaîne.
Un exemple de base
Chaque élément est joint avec un espace simple, ce qui produit :
Hello World !Utiliser un séparateur différent
La colle peut être n'importe quelle chaîne, pas seulement un seul caractère. Ici, nous joignons avec un tiret :
Résultat :
Hello-World-!Un usage courant en pratique est la construction d'une liste séparée par des virgules pour l'affichage ou pour une requête :
<?php
$ids = [4, 7, 12, 19];
echo 'WHERE id IN (' . implode(', ', $ids) . ')';
// WHERE id IN (4, 7, 12, 19)
?>Joindre un tableau associatif
implode() ignore complètement les clés et joint uniquement les valeurs, dans l'ordre d'insertion :
<?php
$user = ['id' => 1, 'name' => 'Sam', 'role' => 'admin'];
echo implode(' | ', $user);
?>Résultat :
1 | Sam | adminSi vous avez également besoin des clés (par exemple id=1&name=Sam), utilisez http_build_query() ou array_map() sur les clés — implode() seul ne peut pas les voir.
Cas particuliers et pièges
Tableau vide. Joindre un tableau vide retourne toujours une chaîne vide, quel que soit le séparateur :
<?php
echo '[' . implode(', ', []) . ']'; // []
?>Les valeurs non-chaînes sont converties en chaînes. Les nombres, les booléens et null sont convertis selon les règles normales de PHP — ce qui peut surprendre : true devient "1", tandis que false et null deviennent "" (une chaîne vide) :
<?php
echo implode(', ', [1, 2.5, true, null, 'x']);
// 1, 2.5, 1, , x
?>Si vous souhaitez filtrer les valeurs null/false, faites passer le tableau par array_filter() avant de le joindre.
Le séparateur est optionnel. Appeler implode($array) sans colle concatène les valeurs directement. Il est recommandé de passer le séparateur en premier pour plus de lisibilité :
<?php
echo implode(['a', 'b', 'c']); // abc
?>Avant PHP 8.0, les deux arguments pouvaient être passés dans n'importe quel ordre (
implode($array, $glue)). Ce comportement historique a été supprimé dans PHP 8.0 — passez toujours le séparateur en premier.
implode() vs explode()
implode() et explode() sont des opérations miroir : l'une construit une chaîne à partir d'un tableau, l'autre reconstruit le tableau à partir de la chaîne.
<?php
$csv = implode(',', ['red', 'green', 'blue']); // "red,green,blue"
$back = explode(',', $csv); // ['red', 'green', 'blue']
?>join() est simplement un alias de implode() — les deux sont interchangeables. Voir join() et explode() pour en savoir plus.