
Dans cet article
- La fonction php implode transforme un tableau en chaîne de caractères en une seule ligne de code
- Le séparateur (glue) est optionnel depuis PHP 7.4 et se place en premier argument par convention
- La différence entre implode et explode est symétrique : l’une fusionne, l’autre découpe
- En PHP 8, implode conserve le même comportement mais l’ordre des paramètres inversé est désormais déprécié
- Les cas d’usage courants incluent la génération de requêtes SQL, CSV et balises HTML
- Combiner implode avec array_map ou array_filter permet de traiter les données avant la fusion
Sommaire
- Qu’est-ce que php implode et à quoi sert cette fonction
- Syntaxe et paramètres de la fonction implode
- Exemples pratiques pour maîtriser implode en PHP
- Différence entre implode et explode en PHP
- Implode en PHP 8 : ce qui change concrètement
- Cas d’usage avancés et combinaisons avec d’autres fonctions
- Erreurs courantes et bonnes pratiques avec implode
- Tableau comparatif des fonctions de manipulation de chaînes
- Alternatives à implode selon le contexte
Quand j’ai commencé à développer en PHP en 2014, l’une des premières fonctions que j’ai utilisées quotidiennement était php implode. Que ce soit pour construire une requête SQL dynamique, générer un fichier CSV ou assembler des fragments HTML, cette fonction reste un outil incontournable du développeur PHP. Après plus de dix ans de pratique en agence puis en freelance, je constate que beaucoup de développeurs sous-estiment sa puissance ou commettent des erreurs évitables. Dans ce guide, je vous présente tout ce qu’il faut savoir pour utiliser implode php efficacement dans vos projets.
Qu’est-ce que php implode et à quoi sert cette fonction
La fonction implode en PHP permet de fusionner les éléments d’un tableau (array) en une seule chaîne de caractères. Elle prend un séparateur (appelé « glue » dans la documentation officielle) et un tableau, puis retourne une chaîne où chaque élément du tableau est relié par ce séparateur.
En termes simples, si vous avez un tableau contenant ["pomme", "banane", "cerise"] et que vous appliquez implode avec une virgule comme séparateur, vous obtenez la chaîne "pomme,banane,cerise". C’est aussi simple que cela.
Cette opération est parfois appelée « stringify » dans d’autres langages, car elle convertit une structure de données en représentation textuelle. En PHP, implode est la méthode standard pour réaliser cette conversion de tableau vers chaîne. Elle dispose même d’un alias historique, join(), hérité de Perl, qui fait exactement la même chose.

Voici un premier exemple élémentaire pour comprendre le mécanisme :
<?php
$fruits = ['pomme', 'banane', 'cerise'];
$resultat = implode(', ', $fruits);
echo $resultat;
// Affiche : pomme, banane, cerise
La fonction est disponible dans toutes les versions de PHP, depuis PHP 4 jusqu’aux versions les plus récentes. Elle fait partie du cœur du langage et ne nécessite aucune extension particulière. Pour manipuler des sous-chaînes après la fusion, vous pouvez combiner implode avec d’autres fonctions comme substr.
Syntaxe et paramètres de la fonction implode
La signature officielle de la fonction implode est la suivante :
implode(string $separator, array $array): string
Deux paramètres composent cette fonction :
- $separator (chaîne) : le caractère ou la chaîne insérée entre chaque élément du tableau. Ce paramètre est optionnel ; si vous l’omettez, PHP utilise une chaîne vide
""par défaut. - $array (tableau) : le tableau dont les éléments seront fusionnés. Chaque élément est converti en chaîne avant la concaténation.
La valeur de retour est toujours une chaîne de caractères (string). Si le tableau est vide, implode retourne une chaîne vide. Il n’y a aucun risque d’erreur fatale avec un tableau vide.
<?php
// Avec séparateur
$tags = ['php', 'symfony', 'laravel'];
echo implode(' | ', $tags);
// Affiche : php | symfony | laravel
// Sans séparateur (concaténation directe)
$lettres = ['a', 'b', 'c'];
echo implode($lettres);
// Affiche : abc
// Tableau vide
$vide = [];
echo implode(',', $vide);
// Affiche : (chaîne vide)
Un point important : historiquement, PHP acceptait les paramètres dans les deux ordres (tableau puis séparateur, ou séparateur puis tableau). Cette souplesse a été dépréciée à partir de PHP 7.4 et provoque un avertissement. Je recommande de toujours placer le séparateur en premier argument pour écrire du code propre et maintenable.
Exemples pratiques pour maîtriser implode en PHP
La théorie c’est bien, mais voyons comment implode php s’utilise dans des situations réelles que je rencontre dans mes projets.
Construire une liste HTML
<?php
$elements = ['Accueil', 'Services', 'Contact'];
$listeHtml = '<li>' . implode('</li><li>', $elements) . '</li>';
echo '<ul>' . $listeHtml . '</ul>';
// <ul><li>Accueil</li><li>Services</li><li>Contact</li></ul>
Générer une clause SQL WHERE IN
<?php
$ids = [12, 45, 78, 102];
$placeholders = implode(',', array_fill(0, count($ids), '?'));
$sql = "SELECT * FROM utilisateurs WHERE id IN ($placeholders)";
// SELECT * FROM utilisateurs WHERE id IN (?,?,?,?)
Attention : ne concaténez jamais directement des valeurs utilisateur dans une requête SQL. Utilisez toujours des requêtes préparées. L’exemple ci-dessus génère des placeholders, ce qui est la bonne pratique.
Créer une ligne CSV
<?php
$colonnes = ['Nom', 'Prénom', 'Email', 'Ville'];
$ligneCsv = implode(';', $colonnes);
echo $ligneCsv;
// Nom;Prénom;Email;Ville

Assembler un chemin de fichier
<?php
$segments = ['var', 'www', 'html', 'uploads'];
$chemin = '/' . implode('/', $segments);
echo $chemin;
// /var/www/html/uploads
Fusionner des classes CSS dynamiquement
<?php
$classes = ['btn', 'btn-primary'];
if ($estActif) {
$classes[] = 'active';
}
echo '<button class="' . implode(' ', $classes) . '">Valider</button>';
// <button class="btn btn-primary active">Valider</button>
Ces exemples montrent la polyvalence de la fonction. Dans chaque cas, implode simplifie le code par rapport à une boucle manuelle avec concaténation.
Différence entre implode et explode en PHP
La question revient constamment : quelle est la différence entre implode et explode en PHP ? La réponse est simple : ce sont des fonctions symétriques et inverses.
- implode prend un tableau et le transforme en chaîne (tableau → chaîne)
- explode prend une chaîne et la découpe en tableau (chaîne → tableau)
<?php
// implode : tableau vers chaîne
$tableau = ['rouge', 'vert', 'bleu'];
$chaine = implode(',', $tableau);
// "rouge,vert,bleu"
// explode : chaîne vers tableau
$chaine = 'rouge,vert,bleu';
$tableau = explode(',', $chaine);
// ['rouge', 'vert', 'bleu']
Voici un moyen mnémotechnique que j’utilise depuis mes débuts : implode = im(porter dans une chaîne), on « implose » les éléments ensemble. Explode = ex(traire vers un tableau), on « explose » la chaîne en morceaux.
Ces deux fonctions sont souvent utilisées ensemble. Par exemple, pour nettoyer une liste de tags saisis par un utilisateur, comme je le fais régulièrement dans mes projets en combinant avec strpos pour valider les données :
<?php
$saisie = ' php , symfony , laravel , ';
$tags = explode(',', $saisie);
$tags = array_map('trim', $tags);
$tags = array_filter($tags);
$resultat = implode(', ', $tags);
// "php, symfony, laravel"
La différence clé au niveau des paramètres : explode exige obligatoirement un séparateur non vide, alors qu’implode accepte un séparateur vide ou même l’absence de séparateur. Selon la documentation officielle PHP de implode, cette souplesse est volontaire.
Implode en PHP 8 : ce qui change concrètement
Avec l’arrivée de PHP 8, beaucoup de développeurs se demandent si implode a évolué. La bonne nouvelle : le comportement fondamental reste identique. La fonction fonctionne exactement de la même manière qu’en PHP 7.
Le changement majeur concerne l’ordre des paramètres. Avant PHP 7.4, vous pouviez écrire implode($tableau, $separateur) avec les paramètres inversés. Cette syntaxe :
- Génère un E_DEPRECATED depuis PHP 7.4
- Provoque une erreur fatale TypeError depuis PHP 8.0
<?php
// PHP 7.3 et avant : fonctionnait (mais déconseillé)
implode(['a', 'b'], ',');
// PHP 7.4 : fonctionne mais génère un avertissement de dépréciation
implode(['a', 'b'], ',');
// PHP 8.0+ : provoque une erreur fatale TypeError
implode(['a', 'b'], ',');
// Syntaxe correcte pour toutes les versions
implode(',', ['a', 'b']);
Un autre point notable en PHP 8 : le typage strict est renforcé. Si vous passez un argument qui n’est pas un tableau (par exemple un objet ou null), PHP 8 lèvera une TypeError au lieu de tenter une conversion silencieuse. C’est un comportement plus prévisible et plus sûr. Je recommande de toujours vérifier que votre variable est bien un tableau avant d’appeler implode, surtout si elle provient d’une source externe.
Pour exécuter PHP 8 et tester ces comportements, je vous conseille d’utiliser un environnement local avec Docker pour isoler vos versions de PHP. Cela évite les conflits entre projets.
En résumé pour PHP 8 : même fonction, syntaxe plus stricte. Si votre code utilisait déjà la bonne syntaxe (séparateur en premier), aucune modification n’est nécessaire.

Cas d’usage avancés et combinaisons avec d’autres fonctions
La véritable puissance de implode php se révèle quand on la combine avec d’autres fonctions du langage. Voici les combinaisons que j’utilise le plus en production.
Implode avec array_map pour transformer avant fusion
<?php
$prix = [19.99, 29.50, 9.90];
$formattes = implode(' | ', array_map(function($p) {
return number_format($p, 2, ',', ' ') . ' €';
}, $prix));
echo $formattes;
// 19,99 € | 29,50 € | 9,90 €
Implode avec array_filter pour exclure les valeurs vides
<?php
$adresse = ['12 rue de la Paix', '', 'Bâtiment A', null, '75002', 'Paris'];
$adresseComplete = implode(', ', array_filter($adresse));
echo $adresseComplete;
// 12 rue de la Paix, Bâtiment A, 75002, Paris
Implode avec array_keys pour lister les clés
<?php
$config = [
'host' => 'localhost',
'port' => 3306,
'dbname' => 'mabase'
];
$colonnes = implode(', ', array_keys($config));
echo $colonnes;
// host, port, dbname
Implode avec array_unique pour dédupliquer
<?php
$categories = ['php', 'javascript', 'php', 'python', 'javascript'];
$uniques = implode(', ', array_unique($categories));
echo $uniques;
// php, javascript, python
Construire des attributs HTML dynamiquement
<?php
$attributs = [
'type' => 'text',
'name' => 'email',
'placeholder' => 'Votre email',
'required' => true
];
$htmlAttributs = [];
foreach ($attributs as $cle => $valeur) {
if ($valeur === true) {
$htmlAttributs[] = $cle;
} else {
$htmlAttributs[] = $cle . '="' . htmlspecialchars($valeur) . '"';
}
}
echo '<input ' . implode(' ', $htmlAttributs) . ' />';
// <input type="text" name="email" placeholder="Votre email" required />
Cette approche est similaire à ce que l’on retrouve dans les structures conditionnelles en PHP où l’on construit dynamiquement du contenu selon le contexte. Comme le précise la référence des fonctions de tableau PHP, combiner implode avec les fonctions array_* offre une grande flexibilité.
Erreurs courantes et bonnes pratiques avec implode
En plus de dix ans de revue de code, j’ai identifié plusieurs erreurs récurrentes liées à implode php. Voici comment les éviter.
Erreur n°1 : passer autre chose qu’un tableau
<?php
// Mauvais : provoque une TypeError en PHP 8
$resultat = implode(',', 'ceci-nest-pas-un-tableau');
// Bon : vérifier le type avant
$donnees = obtenirDonnees();
if (is_array($donnees)) {
$resultat = implode(',', $donnees);
}
Erreur n°2 : oublier que les éléments sont convertis en string
Si votre tableau contient des objets qui n’implémentent pas __toString(), PHP lèvera une erreur. Assurez-vous que chaque élément peut être converti en chaîne.
<?php
// Problématique : tableau multidimensionnel
$multi = [['a', 'b'], ['c', 'd']];
// implode(',', $multi) provoque un avertissement
// Solution : aplatir d'abord ou utiliser array_map
$resultat = implode(',', array_map(function($sous) {
return implode('-', $sous);
}, $multi));
// "a-b,c-d"
Erreur n°3 : inverser les paramètres
Comme mentionné plus haut, toujours écrire implode($separateur, $tableau) et non l’inverse. C’est la source d’erreur la plus fréquente lors de la migration vers PHP 8.
Erreur n°4 : injection SQL via implode
<?php
// DANGEREUX : ne faites jamais cela
$ids = $_GET['ids']; // Entrée utilisateur non filtrée
$sql = "DELETE FROM articles WHERE id IN (" . implode(',', $ids) . ")";
// CORRECT : utiliser des requêtes préparées
$placeholders = implode(',', array_fill(0, count($ids), '?'));
$stmt = $pdo->prepare("DELETE FROM articles WHERE id IN ($placeholders)");
$stmt->execute(array_map('intval', $ids));
Bonnes pratiques résumées
- Toujours valider le type de la variable avant d’appeler implode
- Utiliser array_filter pour retirer les valeurs nulles ou vides avant la fusion
- Préférer des séparateurs explicites plutôt que des chaînes vides pour la lisibilité
- Ne jamais injecter le résultat d’implode directement dans une requête SQL sans préparation
- Documenter le format attendu quand le séparateur est inhabituel
Tableau comparatif des fonctions de manipulation de chaînes
Pour situer implode dans l’écosystème PHP, voici un tableau comparatif des fonctions les plus utilisées pour manipuler les chaînes et les tableaux.
| Fonction | Direction | Entrée | Sortie | Cas d’usage principal |
|---|---|---|---|---|
| implode() | Tableau → Chaîne | array | string | Fusionner des éléments avec un séparateur |
| explode() | Chaîne → Tableau | string | array | Découper une chaîne selon un délimiteur |
| join() | Tableau → Chaîne | array | string | Alias de implode (identique) |
| str_split() | Chaîne → Tableau | string | array | Découper caractère par caractère |
| sprintf() | Formatage | string + args | string | Formater une chaîne avec des valeurs |
| substr() | Extraction | string | string | Extraire une portion de chaîne |
| str_replace() | Remplacement | string | string | Remplacer des occurrences dans une chaîne |
Ce tableau montre que implode et explode forment un duo complémentaire. Les autres fonctions interviennent à d’autres étapes du traitement des chaînes. Pour approfondir la manipulation de chaînes, je vous invite à consulter mon guide sur strpos en PHP.
Alternatives à implode selon le contexte
Bien que implode soit la solution standard, certains contextes appellent des alternatives plus adaptées.
json_encode pour les structures complexes
Si votre objectif est de sérialiser un tableau pour le transmettre à une API ou le stocker, json_encode() est plus approprié qu’implode. Il préserve la structure, les types et gère les tableaux imbriqués.
<?php
$donnees = ['nom' => 'Dupont', 'roles' => ['admin', 'editeur']];
echo json_encode($donnees, JSON_UNESCAPED_UNICODE);
// {"nom":"Dupont","roles":["admin","editeur"]}
sprintf pour un formatage précis
Quand vous devez insérer des valeurs dans un modèle de chaîne fixe, sprintf est plus lisible qu’une concaténation avec implode.
<?php
$message = sprintf('Bonjour %s, vous avez %d messages.', $nom, $count);
Les générateurs pour les très grands tableaux
Pour des tableaux de plusieurs millions d’éléments, implode charge tout en mémoire. Dans ce cas, une approche par flux (écriture progressive dans un fichier) est préférable.
<?php
$fichier = fopen('export.csv', 'w');
foreach ($grandesQuantites as $ligne) {
fputcsv($fichier, $ligne, ';');
}
fclose($fichier);
Le choix dépend du contexte. Pour la majorité des cas quotidiens (listes, requêtes, HTML), implode reste le choix optimal par sa simplicité et ses performances. En PHP, la gestion des enums peut également bénéficier d’implode pour afficher les valeurs possibles d’une énumération.
À retenir
- Placez toujours le séparateur en premier argument pour éviter les erreurs en PHP 8
- Combinez implode avec array_filter pour exclure les valeurs vides avant la fusion
- Utilisez des requêtes préparées quand vous générez des clauses SQL avec implode
- Vérifiez que votre variable est bien un tableau (is_array) avant d’appeler implode
- Préférez json_encode à implode pour sérialiser des structures de données complexes
Questions fréquentes
Qu’est-ce que implode en PHP ?
La fonction implode en PHP est une fonction native qui permet de fusionner tous les éléments d’un tableau en une seule chaîne de caractères. Elle accepte un séparateur optionnel (appelé « glue ») qui sera inséré entre chaque élément. Par exemple, implode(', ', ['a', 'b', 'c']) retourne la chaîne "a, b, c". C’est l’une des fonctions les plus utilisées pour convertir des données structurées en format textuel.
Que fait exactement la fonction implode() ?
La fonction implode() prend deux arguments : un séparateur (string) et un tableau (array). Elle parcourt chaque élément du tableau, les convertit en chaîne si nécessaire, puis les concatène en intercalant le séparateur entre chaque paire d’éléments. Le résultat est une chaîne unique. Si le tableau est vide, elle retourne une chaîne vide. Si aucun séparateur n’est fourni, les éléments sont simplement collés les uns aux autres.
Quelle est la différence entre implode et explode en PHP ?
Implode et explode sont des fonctions inverses. Implode transforme un tableau en chaîne de caractères en joignant les éléments avec un séparateur. Explode fait l’opération inverse : elle découpe une chaîne de caractères en tableau selon un délimiteur. Par exemple, implode(',', ['a','b']) donne "a,b", tandis que explode(',', 'a,b') donne ['a','b']. Elles sont souvent utilisées ensemble pour nettoyer et reformater des données textuelles.
Qu’est-ce qui change pour implode en PHP 8 ?
En PHP 8, le comportement fondamental d’implode reste identique. Le changement principal concerne l’ordre des paramètres : la syntaxe inversée implode($tableau, $separateur), qui était tolérée dans les versions précédentes, provoque désormais une erreur fatale TypeError. De plus, le typage est plus strict : passer null ou un objet non convertible en string déclenche une TypeError au lieu d’un avertissement silencieux. En résumé, si votre code utilisait déjà la syntaxe standard, aucune modification n’est nécessaire.
Peut-on utiliser implode sur un tableau associatif en PHP ?
Oui, mais implode ne fusionne que les valeurs du tableau, pas les clés. Si vous avez ['nom' => 'Dupont', 'ville' => 'Paris'] et que vous appelez implode(', ', $tableau), vous obtiendrez "Dupont, Paris". Pour inclure les clés, vous devez d’abord transformer le tableau avec array_map, par exemple : implode(', ', array_map(fn($k, $v) => "$k=$v", array_keys($tab), $tab)).
L’alias join() est-il identique à implode en PHP ?
Oui, join() est un alias officiel de implode() en PHP. Les deux fonctions sont strictement identiques en termes de comportement, de paramètres et de valeur de retour. L’alias join existe pour des raisons historiques, hérité de langages comme Perl et Python. En pratique, la majorité des développeurs PHP utilisent implode par convention, mais les deux sont parfaitement valides.
Ingénieur système et expert hébergement web. Fondateur de web-city.fr, il partage guides pratiques, comparatifs objectifs et outils gratuits pour choisir le bon hébergeur et créer son site WordPress.