Les structures itératives en PHP
Sommaire
- 1- Objectifs
- 2- Introduction
- 3- La boucle
for
- 3.1- Syntaxe
- 3.2- Application
- 4- La boucle
While
- 4.1- Présentation
- 4.2- Syntaxe
- 4.3- Exemple:
- 5- La boucle
do.. While
- 5.1- Définition et utilisation
- 5.2- Syntaxe
- 5.3- Exemple :
- 6- La boucle
foreach
- 6.1- Présentation
- 6.2- Syntaxe
- 7- Les instructions d'arrêt et de continuité
- 8- Applications
- 8.1- App01
- 8.2- App02
- 8.3- App03
- 8.3.1- Sommaire du cours PHP
Les structures itératives en PHP
-
Objectifs
- Connaitre les structures itératives en PHP
-
Introduction
- 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 4 :
- Les boucles permettent de répéter des opérations élémentaires un grand nombre de fois sans avoir à réécrire le même code. Selon l’instruction de boucle utilisée, le nombre d’itérations peut être défini à l’avance ou être déterminé par une condition particulière.
-
La boucle
for
-
Le nombre d’itérations est connu d’avance.
- La boucle for permet d’exécuter plusieurs fois la même instruction ou le même bloc sans avoir à réécrire les mêmes instructions.
-
Syntaxe
- expression1 est toujours évaluée. Il s’agit généralement de l’initialisation d’une ou plusieurs variables servant de compteur pour la boucle.
- expression2 est ensuite évaluée avec une valeur booléenne : si elle vaut TRUE, la boucle continue et les instructions comprises dans le bloc sont exécutées, sinon la boucle s’arrête.
- expression3 est exécutée à la fin de chaque itération. Il s’agit le plus souvent d’une instruction d’incrémentation de la variable compteur.
-
Application
- Créer un script PHP qui affiche six niveaux de titre utilisant les balises <h1> à <h6> et une couleur bleue en deux lignes de code seulement.
- Le résultat de la boucle est illustré à la figure suivante:
while
do while
for
foreach
for(expression1; expression2; expression3)
{ //instruction ou bloc;
}
<?php
for($i=1;$i<7;$i++)
{
echo "<font color='blue'><h$i> $i:Titre de niveau $i</font></h$i>";
}
?>
La boucle While
-
Présentation
- En anglais
"while"
signifie “Tant que”. Pour créer une boucle , il faut donc utiliser ce mot clé suivi d’une indication qui dit quand la boucle s’arrête. - Lorsque l’on souhaite effectuer une même série d’instructions tant qu’une condition donnée reste vérifiée, on utilise une boucle “while”.
- Cette boucle “while” est utilisée lorsqu’elle correspond au cas où l’on ne peut déterminer à l’avance le nombre d’itérations nécessaires à la résolution de notre problème.
- Le but de la boucle “while” est de répéter certaines instructions tant qu’une condition est respectée.
- L’avantage de “while” est donc qu’il ne faut pas connaitre à l’avance le nombre de fois où on devra répéter notre boucle.
-
Syntaxe
while condition booléenne:
Instruction 1 # Tant que la condition booléenne est vérifiée
Instruction 2 # Faire les différentes instructions qui suivent
.......
Instruction n
Exemple:
- L’exemple ci-dessous effectue une suite de tirages de nombres aléatoires compris entre 1 et 100 grâce à la fonction rand(), avec comme condition supplémentaire que le nombre tiré soit un multiple de 7.
- Le script affiche les nombres tirés jusqu’à trouver un multiple de 7.
<!DOCTYPE html >
<html lang="fr">
<head>
<title>Les structures de contrôle en PHP</title>
<meta ="UTF-8">
</head>
<body>
<?php
$n=1;
while($n%7!=0 )
{
$n = rand(1,100);
echo $n," /";
}
?>
</body>
</html>
La boucle do.. While
-
Définition et utilisation
- La structure
do
permet d’exécuter une instruction ou un bloc d’instructions et de répéter cette action tant qu’une expression logique controlée par while est vraie. - Les instructions
do..while
sont similaires aux instructionswhile
, si ce n’est que la condition qui est vérifiée à la fin de chaque itération, et non au début. - Cela signifie que la boucle s’exécute toujours au moins une fois (l’expression n’est testée qu’à la fin de l’itération), ce qui n’est pas le cas lorsque vous utilisez une boucle
while
(l’expression est vérifiée au début de chaque itération). -
Syntaxe
do
{
instructions
} while (condition(s))
Paramètres
- instruction
- Une instruction exécutée au moins une fois et ré-exécutée chaque fois que la condition de test est évaluée à true. On peut exécuter plusieurs instructions au sein d’une boucle grâce à l’instruction block ({ … }) qui permet de grouper différentes instructions en une seule.
- condition
- Une expression évaluée après chaque passage dans la boucle.
Exemple :
<!DOCTYPE html >
<html lang="fr">
<head>
<title>Les structures de contrôle en PHP</title>
<meta ="UTF-8">
</head>
<body>
<?php
$i = 0;
do {
echo $i ." ";
$i++;
} while ($i < 10);
?>
</body>
</html>
- Dans l’exemple suivant, les instructions de la boucle do…while continuent à s’exécuter tant que la variable i est inférieure à 10.
La boucle foreach
-
Présentation
- La boucle
foreach
est particulièrement efficace pour lister les tableaux associatifs dont il n’est nécessaire de connaître ni le nombre d’éléments ni les clés. - Le but de la boucle
foreach
est d’effectue une itération spécifique sur les éléments du tableau(Array). - Sa syntaxe est variable selon que vous souhaitez récupérer seulement les valeurs ou les valeurs et les clés (ou les indices).
-
Syntaxe
foreach($tableau as $valeur)
{
//bloc utilisant la valeur de l'élément courant
}
$valeur
contient successivement chacune des valeurs du tableau. Il importe cependant de ne pas utiliser un nom de variable existant, faute de quoi sa valeur est écrasée.foreach
ne sont pas locales à la boucle et gardent donc la valeur du dernier élément lu dans tout le script.Les instructions d’arrêt et de continuité
- PHP introduit également deux instructions particulières des boucles. Il s’agit de
continue
etbreak
. - La première permet de forcer le passage à l’itération suivante en sautant tout ou partie du bloc d’instructions à exécuter.
- La seconde, quant à elle, permet de forcer à quitter une structure conditionnelle telle que
for()
,while()
,foreach()
ouswitch()
. - Ces deux instructions peuvent prendre un paramètre optionnel de type entier permettant de connaître le nombre de structures emboîtées qui ont été interrompues.
- Illustrons brièvement ces deux concepts à l’aide d’exemples simples.
Exemple d'utilisation de continue
<?php
for($i=0; $i<=10; $i++)
{
// On n'affiche pas les 5 premiers nombres
if($i<=5)
{
continue;
}
// Affichage des nombres de 6 à 10
echo $i ,'<br/>';
}
?>
Applications
-
App01
- Effectuer une suite de tirages de nombres aléatoires jusqu'à obtenir une suite composée d'un nombre pair suivi de deux nombres impairs.
- Arrêter les tirages et afficher le nombre de coups réalisés.
- Exemple de résultat obtenu :
-
App02
- Choisir un nombre de trois chiffres.
- Effectuer ensuite des tirages aléatoires et compter le nombre de tirages nécessaire pour obtenir le nombre initial. Arrêter les tirages et afficher le nombre de coups réalisés.
- Réaliser ce script d’abord avec l’instruction
while
puis avec l’instructionfor
. - l’instruction
while
- l’instruction
for
-
App03
- Utiliser une boucle
while
pour déterminer le premier entier obtenu par tirage aléatoire qui soit un multiple d’un nombre donné. - Écrire la variante utilisant la boucle
do…while
. - l’instruction
while
- l’instruction
do…while
-
194,285,494
435,759,162
237,292,768
366,533,397
Résultat obtenu en 4 coups
Solution
<?php
$compteur=0;
do
{
$x=rand(100,1000);
$y=rand(100,1000);
$z=rand(100,1000);
if($x%2==1 OR $y%2==0 OR $z%2==0){
echo $x, ", ",$y, ", ",$z,"<br />";
}else{
echo "<b>",$x, ", ",$y, ", ",$z,"</b><br>";
}
$compteur++;
}while($x%2==1 OR $y%2==0 OR $z%2==0);
echo "Résultat obtenu en $compteur coups";
?>
Solution
<?php
//Nombre à trouver
$nb=789;
//compteur
$coup=0;
$x=0;
//boucle de tirage
while($x!=$nb)
{
$x=rand(100,1000);
$coup++;
//echo $x,"<br />";//pour afficher tous les tirages
}
echo "<h1>$nb trouvé en $coup coups </h1>";
?>
Solution
<?php
//Nombre à trouver
$nb=789;
$x=0;
//boucle de tirage
for($coup=1;$x!=$nb;$coup++)
{
$x=rand(100,1000);
//echo $x,"<br />";//pour afficher tous les tirages
}
echo "<h1>$nb trouvé en $coup coups </h1>";
?>
Solution
<?php
$nb=57;
$compteur=0;
$x=rand(10,1000);
//Boucle while
while($x%$nb!=0)
{
$x=rand(10,1000);
$compteur++;
}
echo "<h1>$x est multiple de $nb: Résultat obtenu en $compteur coups</h1>";
?>
Solution
<?php
$nb=57;
$compteur=0;
do
{
$x=rand(0,1000);
$compteur++;
}
while($x%$nb!=0);
echo "<h1>$x est multiple de $nb: Résultat obtenu en $compteur coups</h1>";
?>
- Références:
- https://www.php.net
- Livre PHP7 Cours et exercices Jean Engels 2e édition
- Technologies de l’Information et de la Communication 4 année secondaire