Aller au contenu principal

Module PHP.6 – Boucles

Objectif

Maîtriser toutes les boucles PHP : for, while, foreach, et leurs variantes pour répéter des opérations efficacement.

Théorie

for

La boucle for répète un bloc de code un nombre déterminé de fois.

Structure :

for (initialisation; condition; incrémentation) {
// Code à répéter
}

Exemple de base :

for ($i = 0; $i < 10; $i++) {
echo $i . " ";
}
// Affiche : 0 1 2 3 4 5 6 7 8 9

Variations :

// Compter à l'envers
for ($i = 10; $i > 0; $i--) {
echo $i . " ";
}

// Par pas de 2
for ($i = 0; $i < 10; $i += 2) {
echo $i . " "; // 0 2 4 6 8
}

// Boucle infinie (à éviter)
for (;;) {
// Code
if ($condition) break;
}

Boucles imbriquées :

for ($i = 1; $i <= 10; $i++) {
for ($j = 1; $j <= 10; $j++) {
echo $i . " x " . $j . " = " . ($i * $j) . "<br>";
}
}

while

La boucle while répète tant qu'une condition est vraie.

Structure :

while (condition) {
// Code
}

Exemple :

$i = 0;
while ($i < 10) {
echo $i . " ";
$i++;
}

Attention aux boucles infinies :

$i = 0;
while ($i < 10) {
echo $i;
// Oubli d'incrémenter $i = boucle infinie !
}

do-while : Exécute au moins une fois, puis vérifie la condition.

$i = 0;
do {
echo $i . " ";
$i++;
} while ($i < 10);

Quand utiliser do-while :

  • Quand on veut exécuter au moins une fois
  • Validation de saisie utilisateur
  • Menu interactif

foreach

La boucle foreach parcourt les tableaux et objets.

Structure pour tableaux :

foreach ($tableau as $valeur) {
// Code
}

foreach ($tableau as $cle => $valeur) {
// Code avec clé et valeur
}

Exemples :

$nombres = [10, 20, 30, 40];

// Par valeur
foreach ($nombres as $nombre) {
echo $nombre . " ";
}

// Par clé et valeur
foreach ($nombres as $index => $nombre) {
echo "$index : $nombre<br>";
}

Tableaux associatifs :

$personne = [
"nom" => "Dupont",
"age" => 30,
"ville" => "Paris"
];

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

Tableaux multidimensionnels :

$etudiants = [
["nom" => "Jean", "note" => 15],
["nom" => "Marie", "note" => 18],
["nom" => "Pierre", "note" => 12]
];

foreach ($etudiants as $etudiant) {
echo $etudiant["nom"] . " : " . $etudiant["note"] . "<br>";
}

Modifier les valeurs (référence) :

$nombres = [10, 20, 30];

foreach ($nombres as &$nombre) {
$nombre *= 2; // Modifie le tableau original
}
unset($nombre); // Important : détruire la référence

// $nombres = [20, 40, 60]

Contrôle des boucles

break : Sort de la boucle immédiatement

for ($i = 0; $i < 10; $i++) {
if ($i == 5) {
break; // Sort de la boucle
}
echo $i;
}
// Affiche : 0 1 2 3 4

continue : Passe à l'itération suivante

for ($i = 0; $i < 10; $i++) {
if ($i % 2 == 0) {
continue; // Passe les nombres pairs
}
echo $i;
}
// Affiche : 1 3 5 7 9

break/continue avec niveau :

for ($i = 0; $i < 3; $i++) {
for ($j = 0; $j < 3; $j++) {
if ($j == 1) {
break 2; // Sort des 2 boucles
}
echo "$i-$j ";
}
}

Labels (PHP 7.3+) :

boucle_externe:
for ($i = 0; $i < 3; $i++) {
for ($j = 0; $j < 3; $j++) {
if ($condition) {
break boucle_externe;
}
}
}

Comparaison des boucles

Quand utiliser for :

  • Nombre d'itérations connu
  • Parcourir avec un index
  • Répéter un nombre fixe de fois

Quand utiliser while :

  • Nombre d'itérations inconnu
  • Condition externe
  • Attendre une action utilisateur

Quand utiliser foreach :

  • Parcourir un tableau
  • Parcourir un objet itérable
  • Toujours préféré pour les tableaux

Fonctions de tableau utiles avec boucles

array_map : Applique une fonction à chaque élément

$nombres = [1, 2, 3, 4];
$doubles = array_map(function($n) {
return $n * 2;
}, $nombres);
// [2, 4, 6, 8]

array_filter : Filtre les éléments

$nombres = [1, 2, 3, 4, 5];
$pairs = array_filter($nombres, function($n) {
return $n % 2 == 0;
});
// [2, 4]

array_reduce : Réduit à une valeur

$nombres = [1, 2, 3, 4];
$somme = array_reduce($nombres, function($carry, $item) {
return $carry + $item;
}, 0);
// 10

Exercice

  1. Boucle for

    • Affichez les nombres de 1 à 100
    • Affichez seulement les nombres pairs
    • Créez une table de multiplication
  2. Boucle while

    • Demandez un nombre jusqu'à ce qu'il soit valide
    • Comptez jusqu'à ce qu'une condition soit remplie
    • Comparez avec do-while
  3. Boucle foreach

    • Parcourez un tableau indexé
    • Parcourez un tableau associatif
    • Parcourez un tableau multidimensionnel
  4. Contrôle des boucles

    • Utilisez break pour sortir prématurément
    • Utilisez continue pour sauter des itérations
    • Testez break avec niveau
  5. Fonctions de tableau

    • Utilisez array_map pour transformer un tableau
    • Utilisez array_filter pour filtrer
    • Utilisez array_reduce pour calculer une somme

Quiz

  1. Quelle boucle utiliser pour parcourir un tableau ?

    • for
    • foreach (recommandé)
    • while
  2. Que fait break 2 ?

    • Sort de 2 boucles
    • Sort de 2 niveaux de boucles
    • Répète 2 fois
  3. Quelle est la différence entre while et do-while ?

    • Aucune différence
    • do-while exécute au moins une fois
    • while est plus rapide
  4. Comment modifier les valeurs d'un tableau dans foreach ?

    • Impossible
    • Utiliser la référence &
    • Utiliser array_map
  5. Que fait continue dans une boucle ?

    • Sort de la boucle
    • Passe à l'itération suivante
    • Répète l'itération

Mini défi

Mission : Créer un système de traitement de données

Créez un script qui traite une liste d'étudiants avec leurs notes :

Données d'entrée :

$etudiants = [
["nom" => "Jean", "notes" => [15, 18, 12, 14]],
["nom" => "Marie", "notes" => [16, 17, 19, 18]],
["nom" => "Pierre", "notes" => [10, 11, 9, 12]],
["nom" => "Sophie", "notes" => [20, 19, 18, 20]]
];

Traitements à effectuer :

  1. Calculer la moyenne de chaque étudiant

    • Parcourez chaque étudiant
    • Calculez la moyenne de ses notes
    • Ajoutez la moyenne au tableau
  2. Déterminer l'appréciation

    • = 16 : "Très bien"

    • = 14 : "Bien"

    • = 12 : "Assez bien"

    • = 10 : "Passable"

    • < 10 : "Insuffisant"
  3. Statistiques globales

    • Moyenne générale de tous les étudiants
    • Nombre d'étudiants par appréciation
    • Meilleure et pire moyenne
  4. Filtres

    • Afficher seulement les étudiants avec moyenne >= 14
    • Afficher seulement ceux avec "Très bien"
    • Trier par moyenne décroissante

Critères :

  • ✅ Utilisation de foreach pour parcourir
  • ✅ Utilisation de for pour calculer les moyennes
  • ✅ Utilisation de array_map, array_filter si approprié
  • ✅ Code clair et bien organisé
  • ✅ Affichage formaté et lisible

Objectif : Maîtriser toutes les boucles PHP et les utiliser efficacement pour traiter des données.


Validation : Vous pouvez passer au module suivant quand vous maîtrisez for, while, foreach et pouvez les utiliser pour résoudre des problèmes complexes.