Semaine 1 - Jour 5 : Boucles

Répéter des Actions

Les boucles permettent d'exécuter du code plusieurs fois sans le réécrire. Elles sont essentielles pour parcourir des tableaux, répéter des opérations, ou générer du contenu dynamique.

Les types de boucles en PHP :
for : nombre d'itérations connu à l'avance
while : tant qu'une condition est vraie
do...while : comme while, mais exécuté au moins une fois
foreach : parcourir les éléments d'un tableau (le plus utilisé !)

1. Boucle for

Quand on connaît le nombre d'itérations :

<?php
// Syntaxe : for (init; condition; incrémentation)

// Compter de 1 à 5
for ($i = 1; $i <= 5; $i++) {
    echo "Itération " . $i . "<br>";
}

// Table de multiplication
$nombre = 7;
for ($i = 1; $i <= 10; $i++) {
    echo $nombre . " x " . $i . " = " . ($nombre * $i) . "<br>";
}

// Compter à rebours
for ($i = 5; $i >= 1; $i--) {
    echo $i . "... ";
}
echo "Décollage !";
?>
Résultat :
Itération 1
Itération 2
... (jusqu'à 5)
7 x 1 = 7
7 x 2 = 14
... (jusqu'à 70)
5... 4... 3... 2... 1... Décollage !

2. Boucle while

Tant qu'une condition est vraie :

<?php
// Syntaxe : while (condition) { ... }

$compteur = 1;
while ($compteur <= 5) {
    echo "Compteur : " . $compteur . "<br>";
    $compteur++;
}

// Exemple : lire des données jusqu'à une condition
$total = 0;
$nombre = 10;

while ($nombre > 0) {
    $total += $nombre;
    $nombre--;
}
echo "Somme de 1 à 10 : " . $total; // 55
?>
Résultat :
Compteur : 1
Compteur : 2
... (jusqu'à 5)
Somme de 1 à 10 : 55
Attention : Assurez-vous que la condition devient fausse, sinon boucle infinie !

3. Boucle do...while

Exécute le code AU MOINS une fois :

<?php
// Syntaxe : do { ... } while (condition);

$nombre = 1;
do {
    echo "Nombre : " . $nombre . "<br>";
    $nombre++;
} while ($nombre <= 3);

// Différence avec while : s'exécute même si condition fausse
$x = 10;
do {
    echo "Exécuté une fois ! x = " . $x;
} while ($x < 5); // Faux, mais exécuté quand même

// Cas d'usage : menu avec validation
$choix = 0;
do {
    echo "Menu : 1-Accueil 2-Contact 3-Quitter<br>";
    $choix = 3; // Simule l'entrée utilisateur
} while ($choix != 3);
?>
Résultat :
Nombre : 1
Nombre : 2
Nombre : 3
Exécuté une fois ! x = 10
Menu : 1-Accueil 2-Contact 3-Quitter

4. Boucle foreach

Parcourir les éléments d'un tableau :

<?php
// Tableau indexé
$fruits = ["Pomme", "Banane", "Orange"];

foreach ($fruits as $fruit) {
    echo "J'aime les " . $fruit . "s<br>";
}

// Tableau associatif (clé => valeur)
$personne = [
    "prenom" => "Alice",
    "age" => 25,
    "ville" => "Paris"
];

foreach ($personne as $cle => $valeur) {
    echo $cle . " : " . $valeur . "<br>";
}

// Avec index manuel
$couleurs = ["rouge", "vert", "bleu"];
foreach ($couleurs as $index => $couleur) {
    echo "Couleur " . ($index + 1) . " : " . $couleur . "<br>";
}
?>
Résultat :
J'aime les Pommes
J'aime les Bananes
J'aime les Oranges
prenom : Alice
age : 25
ville : Paris
Couleur 1 : rouge
Couleur 2 : vert
Couleur 3 : bleu

break et continue

<?php
// break : sort de la boucle
for ($i = 1; $i <= 10; $i++) {
    if ($i == 5) {
        break; // Arrête la boucle ici
    }
    echo $i . " ";
}
// Affiche : 1 2 3 4

// continue : passe à l'itération suivante
for ($i = 1; $i <= 10; $i++) {
    if ($i % 2 == 0) {
        continue; // Saute les nombres pairs
    }
    echo $i . " ";
}
// Affiche : 1 3 5 7 9

// Exemple pratique : chercher dans un tableau
$nombres = [3, 7, 12, 18, 25];
$cible = 12;

foreach ($nombres as $index => $nombre) {
    if ($nombre == $cible) {
        echo "Trouvé à l'index " . $index;
        break;
    }
}
?>
Résultat :
1 2 3 4
1 3 5 7 9
Trouvé à l'index 2

Boucles Imbriquées

<?php
// Table de multiplication complète
echo "<table border='1' style='border-collapse: collapse;'>";
for ($i = 1; $i <= 5; $i++) {
    echo "<tr>";
    for ($j = 1; $j <= 5; $j++) {
        $resultat = $i * $j;
        echo "<td style='padding: 5px; text-align: center;'>" . $resultat . "</td>";
    }
    echo "</tr>";
}
echo "</table>";

// Pyramide d'étoiles
$hauteur = 5;
for ($i = 1; $i <= $hauteur; $i++) {
    for ($j = 1; $j <= $i; $j++) {
        echo "* ";
    }
    echo "<br>";
}
?>
Résultat :
Table 5x5 avec les produits
*
* *
* * *
* * * *
* * * * *

Erreurs Courantes

// ❌ ERREUR : Boucle infinie
$i = 0;
while ($i < 10) {
    echo $i;
    // Oubli de $i++ !
} // Ne s'arrête jamais !

// ✅ CORRECT
$i = 0;
while ($i < 10) {
    echo $i;
    $i++;
}

// ❌ ERREUR : Mauvaise condition dans for
for ($i = 0; $i < 5; $i--) { // Décrémente au lieu d'incrémenter !

// ✅ CORRECT
for ($i = 0; $i < 5; $i++) {
Froggiesplaining :


Objectifs de ce cours :
✅ Maîtriser la boucle for pour un nombre d'itérations connu
✅ Utiliser while quand on ne connaît pas le nombre d'itérations
✅ Comprendre do...while (exécuté au moins une fois)
✅ Utiliser foreach pour parcourir les tableaux (le plus important !)
✅ Savoir utiliser break et continue pour contrôler les boucles

Points clés à retenir :
for : utiliser quand on connaît le nombre d'itérations (ex: 1 à 10)
while : tant que la condition est vraie (vérification avant exécution)
do...while : comme while, mais s'exécute AU MOINS une fois
foreach : LE PLUS UTILISÉ pour parcourir des tableaux
break : sort immédiatement de la boucle
continue : passe à l'itération suivante (saute le reste du code)
• Attention aux boucles infinies : toujours s'assurer que la condition devient fausse !
Boucles imbriquées : une boucle dans une autre (ex: tables de multiplication)

Exercice pratique :
1. Créez un fichier boucles.php
2. Affichez les nombres de 1 à 10 avec une boucle for
3. Calculez la somme de 1 à 100 avec une boucle while
4. Créez un tableau : $villes = ["Paris", "Lyon", "Marseille"];
5. Parcourez-le avec foreach et affichez chaque ville
6. Affichez seulement les nombres impairs de 1 à 20 (utilisez continue)
7. (Bonus) Créez une table de multiplication de 1 à 10 avec des boucles imbriquées

Froggie explain

GitHub - eCrea