Les boucles vont vous permettre d'effectuer un certain nombre de fois les memes operations, par exemple afficher une suite de nombres que l'on incrementera a chaque tour de boucle. Vous allez pouvoir repeter autant d'instructions que vous souhaitez et vous arreter lorsque vous l'aurez decide, selon une condition bien precise par exemple (si vous ne vous rappelez plus de ce qu'est une condition, je vous engage a relire le chapitre les concernant). Voyons maintenant differents types de boucles que nous expliquerons au fur et a mesure. Commencons par la boucle la plus simple, la boucle while.
Cette boucle qui est une des plus utilisees en PHP va vous permettre d'effectuer une ou plusieurs actions tant que la condition que vous placerez a l'interieur des parentheses sera verifiee. Voyons de plus pres sa syntaxe :
<?php
while(condition)
{
instruction 1;
instruction 2;
...
}
?>
Voyons maintenant un exemple. Imaginiez que vous souhaitez afficher la valeur d'un nombre tant que celui-ci est inferieur a 7. Des que le nombre sera superieur a 7, vous quitterez la boucle. Le nombre sera incremente d'une unite a chaque tour de boucle. Voila ce que ca donne avec une boucle while en pratique :
<?php
$i = 0; //on definit la variable $i qui sera notre nombre que l'on incrementera. Ici $i va commencer a 0
while($i < 7)
{
echo $i.'<br />';
$i++;
}
?>
On traduit donc la boucle while tant que. Tant que la condition est verifiee (ici $i < 7), PHP traite les instructions situees dans la boucle. Vous pouvez mettre plusieurs conditions entre parentheses. Voyons un autre exemple, cette fois-ci nous souhaitons que $i reste inferieur a sept et que $j soit inferieur a 5 :
<?php
$i = 0; //on definit la variable $i qui sera notre nombre que l'on incrementera. Ici $i va commencer a 0
$j = 4;
while($i < 7 AND $j < 5)
{
echo $i.'<br />';
$i++;
$j++;
}
?>
Vous allez constater que la variable $i ne s'affiche qu'une seule fois. Pourquoi ? car au prochain tour de boucle, $j vaudra 5, or on n'effectue la boucle que si $i < 7 ET $j < 5. Vous l'avez compris, vous pouvez utiliser ici toutes les conditions que l'on a vues au chapitre precedent. Voyons maintenant une boucle differente, la boucle for.
Cette boucle est tres utile lorsque, comme pour notre premier exemple, vous souhaitez incrementer une variable sur une certaine plage de valeurs connue a l'avance.
Etudions sa syntaxe :
<?php
for(initialisation; condition de continuite ; expression 3)
{
instruction 1;
instruction 2;
...
}
?>
La premiere expression (initialisation) est interpretee au premier demarrage de la boucle. Elle ne sera executee qu'une seule fois (et non a chaque tour de boucle). On y place generalement l'initialisation des variables. La deuxieme condition est appelee condition de continuite, on la place pour dire "si cette condition est respectee, alors la boucle peut continuer". La troisieme expression sera elle interpretee a la fin de chaque tour de boucle. On y place generalement l'incrementation d'une variable, mais vous pouvez y mettre n'importe quoi, faites attention cependant aux boucles infinies. On entend par boucle infinie une boucle qui ne s'arrete jamais. Outre le fait de monopoliser le processeur, votre script ne s'arretera pas en fonction de la configuration de PHP.
Voici notre premier exemple qui utilise cette fois-ci une boucle for :
<?php
for($i=0;$i < 7;$i++)
{
echo $i.'<br />';
}
?>
Vous pouvez constater que pour cet exemple precis, le code a ete legerement reduit. Ces deux codes sont pourtant equivalents. Reprenons notre deuxieme exemple, cette fois-ci a l'aide d'une boucle for. Comme vous allez pouvoir le constater, on peut egalement placer plusieurs conditions :
<?php
$i = 0; //on definit la variable $i qui sera notre nombre que l'on incrementera. Ici $i va commencer a 0
for($j=4;$i < 7 AND $j < 5;$j++)
{
echo $i.'<br />';
$i++;
}
?>
Voyons maintenant une derniere boucle, qui n'est pas plus compliquee qu'une boucle while. Il s'agit de la boucle do-while.
Rien qu'au nom de la boucle, vous pouvez vous douter qu'elle a des similitudes avec la boucle while. Effectivement, c'est le cas ! Neanmoins, une difference de taille les separent. Reprenons notre premier exemple avec la boucle while :
<?php
$i = 0; //on definit la variable $i qui sera notre nombre que l'on incrementera. Ici $i va commencer a 0
while($i < 7)
{
echo $i.'<br />';
$i++;
}
?>
Vous constatez que si on initialise $i a 8, la boucle ne sera jamais executee, car des l'analyse de la condition, 8 < 7 renverra FALSE (et oui, 8 est bien inferieur a 7 !).
Vous aimeriez peut-etre effectuer au moins une fois une operation, et si une condition est vraie, reboucler autant de fois que vous le souhaitez ? la boucle do-while permet de le faire en PHP. Voici sa syntaxe :
<?php
do
{
instruction 1;
instruction 2;
...
}
while(condition)
?>
Dans ce cas, les instructions seront executees au moins une fois, meme si la condition de continuite est fausse. Par contre, si la condition de continuite est vraie, PHP rebouclera. Voyons notre exemple du 8 < 7 avec une boucle do-while :
<?php
$i = 8;
$j = 7;
do
{
echo 'la boucle a boucle<br />';
}
while($i < $j)
?>