Mammouth du PHP |
19672 Messages
03 déc. 2006, 13:57
Pas très compliqué, regarde et suis les commentaires du code :
<?php
/* La liste des prénoms */
$prenoms = array("Alphonse", "Anatole", "Benoît", "Benjamin");
/* On compte les prénoms */
$nb = count($prenoms);
/* On crée un point de repère vide au départ */
$lettre = "";
/* On boucle sur la liste des prénoms */
for($i = 0; $i < $nb; $i++)
{
/* Récupération de la première lettre du prénom en cours */
$prem_lettre = substr($prenoms[$i], 0, 1);
/* Si la première lettre est différente du pointeur : */
if($lettre != $prem_lettre)
{
/* On affiche la ligne indiquant la lettre */
echo("<strong>Lettre ". $prem_lettre ."</strong><br />\n");
/* On assigne la valeur de cette première lettre au point de repère */
$lettre = $prem_lettre;
}
/* On affiche le prénom */
echo($prenoms[$i] ."<br />\n");
}
?>
Pour l'exemple, je suis parti d'un tableau pour stocker les prénoms, ça fonctionnera aussi bien avec une liste issue d'une base de données. Le principe consiste à créer un point de repère
$lettre : à chaque tour, je vais comparer la première lettre du prénom avec ce point de repère : s'il est différent, alors j'affiche la lettre et j'assigne cette valeur à mon point de repère : au tour suivant, je fais la même comparaison : comme j'ai assigné une valeur, par exemple "A" au moment de traiter "Alphonse", quand j'arrive sur "Anatole", mon repère vaut toujours "A", on ne remplit donc pas la condition du if() et on passe directement à l'affichage du prénom. Au tour suivant, j'arrive sur "Benoît" : le repère vaut "A" mais la première lettre vaut "B" : la condition du if() est remplie, j'affiche la ligne de la lettre et j'assigne la nouvelle valeur à mon repère.
Et ainsi de suite.

Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse 