Home » Programmation Web » PHP » Implode en PHP

Implode en PHP

Malgré le fait que PHP soit mal aimé, il reste majoritairement utilisé pour la création de site Web.
Même après des années d’expériences dans ce langage, on découvre toujours de nouvelles fonctions. Dans certains cas, on les améliore pour qu’ils correspondent à nos besoins.

implode : comment ça marche.

A priori, 99% des développeurs PHP connaissent cette fonction, qui permet de rassembler les éléments d’un tableau en une chaîne.
Voici un petit exemple issu de la documentation de PHP :

$array = array('lastname', 'email', 'phone');
$comma_separated = implode(",", $array);

echo $comma_separated; // lastname,email,phone

Comme vous pouvez le voir, tous les éléments du tableau $array se regroupent dans la chaîne de caractère $comma_separated.
Tous les éléments de la chaîne de caractère, se retrouvent dans le même ordre que dans le tableau.

Un problème réel

J’ai eu l’occasion, fin 2019, de créer un bot Twitter simple qui donne les prix d’essence les moins chères en Haute-Garonne.
Dans certains cas, plusieurs villes pouvaient avoir le prix le moins cher, selon le type d’essence.

https://twitter.com/EssenceHg/status/1262260894094053376

Comme je récupérais le nom de ces villes dans un tableau, et que je devais les ajouter dans un tweet, l’utilisation de la fonction implode était obligatoire.

De plus, entre les 2 dernières villes, je ne voulais pas mettre la même séparation que les autres éléments.
En l’occurrence, je voulais mettre un ‘et’ à la place d’une virgule. La fonction finale donne :

/**
 * Join a string with a natural language conjunction at the end.
 * @param string $glue
 * @param array $pieces
 * @param string $conjonction
 * @return string $str
 */
function implode_cjt(string $glue, array $pieces, string $conjonction = 'et'):string {
  $str = array_pop($pieces);
  if ($pieces) {
    $str = implode($glue, $pieces).' '.$conjonction.' ' $str;
  }
  return $str;
}

Comme vous pouvez remarquer, ma fonction récupère 3 paramètres :

  • une chaîne de caractère glue, liaison des infos du tableau.
  • la tableau pieces, qui est le tableau de chaînes à rassembler.
  • conjonction, qui est la liaison des 2 derniers éléments du tableau.

La fonction est simple.

  • On retire d’abord le dernier élément du tableau, avec un array_pop.
  • Si le tableau pieces contient encore des éléments, on les regroupe avec un implode (sans oublier notre conjonction et la valeur récupérée dans le Step 1)

Use Case

Voici deux exemples d’utilisations de cette fonction :

$villes = ["Paris", "Bordeaux", "Toulouse", "Marseille"];
$str = implode_cjt(',', $villes);
echo $str; // Paris, Bordeaux, Toulouse et Marseille

$villes = ["Blois", "Paris", "Toulouse", "Castres"];
$str = implode_cjt(',', $villes, 'ou');
echo $str; // Blois, Paris, Toulouse ou Castres

Conclusion

Je voulais inaugurer ce concept d’articles avec un exemple simple.
J’espère que cet article vous à plus. Si vous en voulez d’autres, n’hésitez pas à me le dire.

Posté dans PHP, Programmation Web

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.