Glisser

PHP : les boucles (for, foreach et while)

PHP : boucles for, foreach et while (partie 9)

Écrit par : Thibault Chazottes

Pourquoi une boucle ?

Afficher « Bonjour » cinq fois avec cinq echo, ça marche. Cent fois : ingérable. Une boucle répète un bloc jusqu’à une condition de sortie.


for : départ, condition, incrément

Référence : for.

Trois expressions, séparées par des points-virgules :

  1. départ : exécuté une fois au début ($i = 0) ;
  2. condition : testée au début de chaque tour. true → on exécute le bloc. false → on sort ;
  3. incrément : exécuté à la fin de chaque tour ($i++).

$i, c’est « i » pour incrément. Le ++ ajoute 1.

<?php
for ($i = 0; $i < 5; $i++) {
    echo 'Bonjour';
}

$i vaut 0, 1, 2, 3, 4. Strictement inférieur à 5 : cinq tours. On peut monter à 10, à 100 : on change juste la condition.

Commencer à 1 avec <=, c’est équivalent et parfois plus lisible :

<?php
for ($i = 1; $i <= 5; $i++) {
    echo 'Bonjour';
}

Afficher le compteur plutôt que le texte :

<?php
for ($i = 0; $i < 100; $i++) {
    echo $i;
}
// 0 jusqu'à 99

while : tant que c’est vrai

Référence : while.

Même idée, découpée : on initialise avant, on incrémente dans le bloc. PHP exécute tant que l’expression est true. Si elle est déjà false au premier test, le bloc ne s’exécute jamais.

<?php
$count = 1;

while ($count <= 5) { echo $count; $count++; } // 1 2 3 4 5

Pour compter de 1 à 5, un for est souvent plus clair : départ, condition et incrément au même endroit. while sert quand la sortie n’est pas juste « jusqu’à N » (lire un fichier, attendre une saisie, etc.).


Boucles infinies

Une boucle répète jusqu’à la condition de sortie. Si cette condition n’arrive jamais, ça tourne sans fin : le script dépasse le temps max, le navigateur « bugue ».

<?php
$count = 1;

while ($count <= 5) { echo $count; // oubli de $count++ : $count reste à 1, la condition reste vraie }

Signe typique : timeout, page qui ne répond plus. Vérifier qu’à chaque tour quelque chose rapproche de la sortie.


foreach : fait pour les tableaux

Référence : foreach.

On peut faire for ($i = 0; …) et $names[$i]. La doc le dit : foreach est la façon recommandée de parcourir un tableau.

Valeur seule :

<?php
$names = ['Thibault', 'Marie', 'Jean'];

foreach ($names as $name) { echo $name; } // Thibault, Marie, Jean

À chaque tour, $name reçoit l’élément courant.

Clé et valeur, sur un tableau associatif :

<?php
$users = [
    'Thibault' => 30,
    'Marie' => 25,
    'Jean' => 35,
];

foreach ($users as $name => $age) { echo "$name a $age ans"; }

Les noms $name et $age, on les choisit : ce sont des variables créées à la volée pour la boucle.


break : on arrête

Référence : break.

Dès qu’on a ce qu’on cherche, inutile de finir le tableau (100 utilisateurs, on a trouvé le bon : on sort).

<?php
$numbers = [10, 20, 30, 40, 50];

foreach ($numbers as $number) { if ($number === 30) { break; } echo $number; } // 10 20

Avec 40 à la place de 30 : 10 20 30. break sort de la boucle tout de suite.


continue : on saute cet élément

Référence : continue.

break arrête tout. continue ignore le tour en cours et passe au suivant.

<?php
$numbers = [10, 20, 30, 40, 50];

foreach ($numbers as $number) { if ($number === 30) { continue; } echo $number; } // 10 20 40 50

30 n’est pas affiché. La boucle reprend à 40, 50.


Démo vidéo


FAQ rapide (SEO & technique)

for ou while ?
Compter de 1 à N : for (départ, condition, incrément au même endroit). Autre condition de sortie : while. Voir for et while.

Parcourir un tableau : for ou foreach ?
foreach est fait pour ça, et recommandé par la doc.

Comment récupérer la clé dans un foreach ?
foreach ($tableau as $cle => $valeur).

break ou continue ?
break sort. continue saute l’élément et enchaîne. Voir break et continue.

C’est quoi une boucle infinie ?
La condition de sortie n’est jamais vraie (souvent un oubli d’incrément). Le script tourne jusqu’au timeout.


Conclusion

Une boucle, c’est répéter jusqu’à une sortie. for pour un compteur, while tant que c’est vrai, foreach pour un tableau. break stoppe, continue ignore un tour. Et on n’oublie pas d’incrémenter.

La suite de la playlist : les fonctions, pour ne plus répéter le code. L’épisode est là : PHP : les fonctions.

Étiquettes :