Boucles
Pourquoi les boucles ?
50 familles, même format 50 fois ? Absurde à la main. Les boucles font ça en quelques lignes.
Les boucles répètent une action sans réécrire le code. 100 produits, 20 lignes HTML, emails à tous les abonnés — quelques lignes suffisent.
while — "tant que..."
while répète un bloc tant qu'une condition est vraie. Dès qu'elle devient fausse, la boucle s'arrête.
$i = 1; // on commence à 1
while ($i <= 5) { // tant que $i est inférieur ou égal à 5...
echo "Tour numéro $i<br>";
$i++; // on augmente $i de 1 à chaque tour
}
Tour numéro 1 Tour numéro 2 Tour numéro 3 Tour numéro 4 Tour numéro 5
Ce que PHP fait :
- $i = 1. 1 <= 5 ? Oui. Exécute. $i devient 2.
- $i = 2. 2 <= 5 ? Oui. Exécute. $i devient 3.
- ... jusqu'à $i = 5.
- $i = 6. 6 <= 5 ? Non. Stop.
Boucle infinie ! Si tu oublies $i++, $i reste toujours à 1. La condition est toujours vraie. La boucle tourne indéfiniment. Le serveur plante. Assure-toi que le compteur évolue à chaque tour.
for — le compteur précis
for est parfaite quand tu sais exactement combien de fois répéter. Elle regroupe départ, condition et avancement en une seule ligne.
// for (point de départ ; condition d'arrêt ; avancement)
for ($i = 1; $i <= 5; $i++) {
echo "$i ";
}
// Affiche : 1 2 3 4 5
Les trois parties :
$i = 1— point de départ (exécuté une fois).$i <= 5— continue tant que vrai (vérifié à chaque tour).$i++— avance de 1 à chaque tour.
Exemple : générer une liste HTML.
echo "<ul>";
for ($i = 1; $i <= 5; $i++) {
echo "<li>Produit numéro $i</li>";
}
echo "</ul>";
• Produit numéro 1 • Produit numéro 2 • Produit numéro 3 • Produit numéro 4 • Produit numéro 5
1000 produits ? Change juste le 5 par 1000. C'est tout.
foreach — parcourir une liste
foreach est la boucle la plus utilisée. Elle parcourt un tableau un élément à la fois.
$fruits = ["pomme", "banane", "cerise"];
foreach ($fruits as $fruit) {
echo "J'aime les $fruit<br>";
}
J'aime les pomme J'aime les banane J'aime les cerise
Décortiqué :
$fruits— le tableau à parcourir.as $fruit— à chaque tour, l'élément du tour est dans$fruit. PHP gère le compteur seul.
Pour récupérer aussi la position (la clé) :
$personne = ["nom" => "Marie", "age" => 28, "ville" => "Paris"];
foreach ($personne as $cle => $valeur) {
echo "$cle : $valeur<br>";
}
nom : Marie age : 28 ville : Paris
$cle => $valeur donne accès à l'étiquette (nom, age, ville) et au contenu. Très utilisé avec des données de base de données.
break et continue — contrôler la boucle
Pour interrompre une boucle ou sauter un tour :
// break — sort de la boucle immédiatement
for ($i = 1; $i <= 10; $i++) {
if ($i === 5) break; // on arrête dès qu'on arrive à 5
echo "$i ";
}
// Affiche : 1 2 3 4
// continue — passe au tour suivant sans exécuter la suite
for ($i = 1; $i <= 6; $i++) {
if ($i % 2 === 0) continue; // si le nombre est pair, on saute
echo "$i ";
}
// Affiche : 1 3 5 (les impairs seulement)
En résumé :
break— s'arrête dès qu'on a trouvé ce qu'on cherche.continue— saute ce tour et passe au suivant.
Cas concret : générer un menu de navigation
Générer un menu HTML depuis un tableau. En production, les données viennent d'une base de données, mais le principe est identique.
$pages = [
"Accueil" => "/",
"Blog" => "/blog",
"Contact" => "/contact",
];
echo "<nav><ul>";
foreach ($pages as $label => $url) {
echo "<li><a href='$url'>$label</a></li>";
}
echo "</ul></nav>";
<nav><ul> <li><a href="/">Accueil</a></li> <li><a href="/blog">Blog</a></li> <li><a href="/contact">Contact</a></li> </ul></nav>
Pour ajouter une page au menu, ajoute juste une ligne dans $pages. Le HTML se génère seul.
while→ répète tant que la condition est vraie — pense à faire évoluer le compteur !for→ quand on sait à l'avance combien de fois répéterforeach→ parcourir un tableau, élément par élément — le plus utilisé en pratiqueforeach ($tab as $cle => $valeur)→ accès à la clé ET à la valeurbreak→ sort de la boucle immédiatementcontinue→ passe au tour suivant sans exécuter la suite du bloc