
Une structure itérative (ou boucle) est un bloc d'instructions dont le but est répéter une opération tant qu'une ou plusieurs conditions sont vérifiées. PHP en distingue 5 :
- while
- do while
- for
- foreach sans clé
- foreach avec clé
La boucle while :
La boucle while est la plus répandue. Elle exécute les instructions jusqu'à ce qu'une condition soit fausse. Le test est exécuté dès le début. Ainsi, si la condition n'est pas vérifiée au début, les instructions comprises dans le bloc ne sont pas exécutées.
Dans une boucle while la variable servant pour la condition est initialisée avant le début de la boucle.
<?php
/* variable initialisée avant */
$i=1;
while ($i<=5){
/* On affiche $i suivi d'un espace ( ) */
echo "$i ";
/* condition de sortie */
$i++;
}
?>
Résulat >>
1 2 3 4 5
Attention, veillez à ce que, à un moment la condition de soit plus réalisée (condition de sortie) sinon vous vous retrouverez avec une boucle sans fin.
La boucle do while :
La boucle do while fonctionne comme la boucle while à la différence que la condition est vérifiée à la fin de la boucle. Ainsi, même si la condition n'est pas vérifiée, les instructions comprises dans le bloc sont exécutées au moins une fois.
Dans une boucle do while la variable servant pour la condition est initialisée avant le début de la boucle.
<?php
/* variable initialisée avant */
$i=1;
do{
/* On affiche $i suivi d'un espace ( ) */
echo "$i ";
/* condition de sortie */
$i++;
while ($i<=0);
}
?>
Résulat >>
1
Là aussi, pensez à la condition de sortie.
La boucle for :
La boucle for, aussi appelée "boucle de comptage" fonctionne différemment. En effet, et c'est bien pratique, la variable servant à la condition, la vérification de la condition et la détermination du modèle de comptage sont effectués dans le début de la boucle.
<?php
for($i=1;$i<=5;$i++){
/* On affiche $i suivi d'un espace ( ) */
echo "$i ";
}
?>
Résulat >>
1 2 3 4 5
La boucle foreach sans clé :
La boucle foreach sans clé s'utilise uniquement avec un tableau. Elle va parcourir chaque élément du tableau et renvoyer sa valeur.
<?php
$nombres=array(1,2,3,4,5);
foreach ($nombres as $valeur)}
/* On affiche $valeur suivi d'un espace ( ) */
echo "$valeur ";
}
?>
Résulat >>
1 2 3 4 5
La boucle foreach avec clé :
La boucle foreach avec clé fonction comme la précédente mais pour un tableau avec clé (voir les variables). Ainsi, elle se différencie par l'utilisation des caractères d'implication.
<?php
$webmaster=array("prenom"=>"Jérémy","nom"info)}
foreach ($webmaster as $cle =>$valeur)}
/* On affiche le couple $cle-$valeur suivi d'un espace ( ) on pourrait tout aussi bien afficher la clé ou la valeur seule*/
echo "$cle=$valeur ";
}
?>
Résulat >>
prenom=Jérémy nom=Laurent age=22
Saut inconditionnel :
Il peut parfois devenir nécessaire de faire sauter à la boucle une ou plusieurs valeurs sans pour autant stopper celle-ci .Pour cela, il existe l'instruction "continue".
Prenons l'exemple d'une division. Dans une boucle on veut diviser le chiffre 5 par (x-7) où x va de 1 à 10. Il est alors évident que lorsque x aura la valeur 7, une erreur surviendra. Grâce à un test et l'utilisation de "continue" on peut éviter l'erreur.
<?php
$x=1;
while ($x<=10){
if ($x==7){
echo "Division par 0.<br/>";
$x++;
continue;
}
$calc=1/($x-7);
echo "$calc<br/>"
$x++;
}
?>
Résulat >>
-0.16666666666667 -0.2 -0.25 -0.33333333333333 -0.5 -1 Division par 0. 1 0.5 0.33333333333333
Vous avez sans doute remarqué que j'ai mis deux fois la condition de sortie. En effet, si je ne la mets pas la première fois, "continue" va sauter la boucle mais x restera à la valeur 7 et l'on obtiendra une boucle sans fin.
Saut inconditionnel :
A l'inverse, on peut vouloir arrêter la boucle. Pour cela, on utilisera l'instruction "break".
Reprenons notre exemple et remplaçons "continue" par "break".
<?php
$x=1;
while ($x<=10){
if ($x==7){
echo "Division par 0.<br/>";
break;
}
$calc=1/($x-7);
echo "$calc<br/>"
$x++;
}
?>
Résulat >>
-0.16666666666667 -0.2 -0.25 -0.33333333333333 -0.5 -1 Division par 0.
Ici, par contre, il n'y a qu'une seule fois la condition de sortie puisque la boucle s'arrête à x=7.
|