Les boucles (while, for, do while)

Les boucles en PHP

Les boucles sont des structures de contrôle permettant d'effectuer un certain nombre de fois les mêmes opérations. Concrètement, il s'agit d'une répétition d'instructions.

Par exemple afficher une suite de nombres que l'on incrémentera à chaque tour de boucle en fonction d'une ou plusieurs conditions à vérifier.

Les opérateurs d'incrémentation et de décrémentation

Incrémenter une valeur signifie qu'on augmente la valeur d'un certain ordre. Pour dire que la valeur d'une variable $i a augmenté d'un point, on écrit :

$i = $i+1 ;

 

Cette instruction peut être écrite d'une manière plus simple en utilisant une instruction équivalente :

$i += 1 ;

 

ou tout simplement :

$i ++ ;

 

A l'inverse, décrémenter une valeur veut dire qu'on diminue la valeur de $i d'un certain nombre de points. La syntaxe est la même que celle de l'incrémentation, sauf qu'à la place du signe + (plus) on met un signe – (moins).

Il est tout à fait possible de faire : $i += 2; pour dire que la valeur de $i augmentera de deux points.

Boucle while en PHP

C'est le moyen le plus simple pour faire une boucle. On traduit la boucle while par 'tant que'. Tant que la/les conditions est/sont vérifiée/s, on traite les instructions situées dans la boucle. La particularité de cette instruction est que la condition est testée à chaque début de boucle.

Syntaxe de while :

<?php
while(condition)
{
  // instruction 1;
  // instruction 2;
  ...
}
?>

 

Dans cet exemple, on affichera tous les nombres pairs qui sont inférieurs à 20.

Exemple :

<?php

$i = 0; // $i est un nombre que l'on incrémentera.
while($i < 20)
{
  echo $i . "<br />";
  $i += 2 ;
}

?>

 

L'essentiel à retenir est que la boucle while() signifie que l'on va répéter un bloc d'instructions tant que la condition passée en paramètre reste vraie (TRUE). Lorsque celle-ci deviendra fausse (FALSE), le programme sortira de la boucle.

Il est donc impératif que le bloc d'instructions, d'une manière ou d'une autre, agisse sur le paramètre. Dans l'exemple précédent, si l'on ne met pas la ligne $i += 2, alors la boucle ne s'arrêtera pas !

Boucle for en PHP

La boucle for() se traduit par 'pour chaque itération'. Il faut connaître par avance la condition d'arrêt. Autrement dit, la valeur qui rendra la condition fausse et stoppera la boucle. Sa syntaxe est simple et prend 3 paramètres obligatoires:

Syntaxe de for

<?php
for(initialisation; condition; incrémentation)
{
  bloc d'instructions;
}

?>

 

L'initialisation est l'expression qui permet d'initialiser la boucle (valeur de départ). Généralement, les boucles débutent à la valeur 0, mais ce n'est pas une généralité. Le second paramètre correspond à la condition d'arrêt de la boucle.

Cette condition est recalculée à chaque itération (passage de boucle) afin de déterminer si l'on continue de boucler ou bien si l'on sort de la boucle. Enfin, le dernier paramètre détermine l'expression qui sera exécutée à la fin d'une itération. Généralement on prévoit ici une incrémentation (ou décrémentation) pour mettre à jour le compteur de la boucle.

Exemple :

x

<?php
for(initialisation; condition; incrémentation)
{
  bloc d'instructions;
}

?>

 

La boucle do-while en PHP

L'instruction do{ ... } while() traduite par: 'répéter / faire ... tant que' est une alternative à l'instruction while().

Elle permet de tester la condition après la première itération et exécution du premier bloc d'instructions. Dans le cas de la boucle while, la condition est examinée avant la boucle tandis que pour la boucle do-while elle est examinée à la fin. Ainsi, même si cette condition n'est pas vérifiée, la boucle s'exécutera au moins une fois.

Syntaxe de do while :

<?php
do
{

  // bloc d'instructions;

}
while(condition);
?>

Exemple :

<?php

// Déclaration et initialisation du compteur
$i = 0;
// Boucle générant la table de multiplication du 8
do
{
  echo "8 x ". $i . " = " . (8*$i) . "<br/>";
  // Incrémentation du compteur
  $i++;
}
while($i <= 10);

?>

 

Remarques: Il existe deux instructions qui permettent de modifier l'exécution des boucles, il s'agit de break et de continue.

L'instruction break permet de sortir de la boucle courante. C'est-à-dire qu'il interrompe directement l'itération. La condition de boucle est une condition qui est toujours vérifiée et, dans la boucle, on utilise break pour quitter celle-ci une fois que l'on est arrivé à nos fins.

'break' permet aussi de gérer des événements plus exceptionnels, comme des erreurs: en cas d'erreur, on quitte la boucle et on affiche un message.

La seconde instruction est l'instruction continue. Cette instruction permet de sauter les instructions de l'itération courante, afin de passer directement à l'itération suivante.

Reprenons l'exemple sur les nombres pairs. Cette fois-ci, la variable $i sera incrémentée de 1. On utilisera l'instruction continue pour éviter les nombres impairs.

<?php

$i = 0; // $i est un nombre que l'on incrémentera.
while($i < 20)
{

 if (! ($i % 2) )
 {

  continue;

 }

echo $i . "<br />";

$i+=1 ;
}

?>

 

A propos de l'auteur

Nicolas Galle

Nicolas Galle est développeur web sénior pour l'agence SEO Aseox.