Les structures itératives en 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
- 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.
-
La boucle for en PHP est utilisée pour exécuter une séquence d’instructions un certain nombre de fois. Elle est principalement utile lorsque vous connaissez le nombre d’itérations à l’avance.
-
Syntaxe
- L’initialisation est exécutée une seule fois au début de la boucle. C’est là que vous définissez et initialisez la variable de contrôle.
- La condition est évaluée avant chaque itération. Si la condition est vraie (true), la boucle continue à s’exécuter. Si la condition devient fausse (false), la boucle s’arrête.
- L’itération est exécutée à la fin de chaque itération de la boucle. Vous pouvez y ajuster la variable de contrôle.
-
Exercices d’application
-
Exercice 01
- Enoncé
- 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:
-
Exercice 02
- Enoncé
- Créez une page web qui affiche les nombres pairs et impairs jusqu’à une constante spécifiée. Voici les instructions :
- Créez un fichier HTML avec une structure de base, y compris une balise <h1> pour le titre.
- Utilisez une feuille de style CSS pour ajouter une mise en forme à votre page, par exemple en utilisant des couleurs différentes pour les nombres pairs et impairs.
- Dans votre code PHP, définissez une constante pour le nombre maximal jusqu’auquel vous souhaitez afficher les nombres pairs et impairs.
- Utilisez une boucle for pour parcourir les nombres de 1 jusqu’à la constante.
- À chaque itération, vérifiez si le nombre est pair ou impair.
- Utilisez du HTML pour afficher le nombre, et indiquez s’il est pair ou impair en utilisant des classes CSS.
- Testez votre page en modifiant la valeur de la constante pour afficher les nombres jusqu’à la limite souhaitée.
- N’oubliez pas d’inclure des commentaires dans votre code pour expliquer chaque étape. Ce projet vous permettra de pratiquer l’utilisation de PHP en combinaison avec HTML et CSS pour afficher des nombres pairs et impairs de manière élégante.
- CSS (styles.css) :
- PHP (numbers.php) :
-
Exercice 03
- Enoncé
- Écrivez un script PHP qui génère une table de multiplication de 1 à 10. Voici les étapes à suivre :
- Utilisez une boucle for pour générer les lignes de la table (nombres de 1 à 10).
- À l’intérieur de la première boucle for, utilisez une autre boucle for pour générer les cellules de la table.
- Dans chaque cellule, affichez le résultat de la multiplication entre le numéro de ligne et le numéro de colonne.
- Utilisez une structure HTML (table) pour afficher la table de multiplication.
- Testez votre script pour vérifier que la table est correctement générée pour les nombres de 1 à 10.
- Supposons que vous ayez généré avec succès une table de multiplication de 1 à 10 en utilisant un script PHP, comme indiqué dans l’exercice précédent. Vous avez une structure HTML qui représente la table, mais elle n’a pas encore de styles CSS.
- Votre tâche consiste à ajouter des styles CSS à la table de multiplication pour la rendre plus attrayante et lisible. Voici quelques points à considérer :
- Appliquez des bordures et des marges pour délimiter les cellules de la table.
- Donnez un style différent aux lignes paires et aux lignes impaires pour améliorer la lisibilité.
- Ajoutez un fond coloré ou une couleur de texte différente pour les en-têtes de colonne (1, 2, 3, …, 10) et les en-têtes de ligne (1, 2, 3, …, 10).
- Assurez-vous que le texte est centré dans les cellules de la table.
- Question bonus : Comment feriez-vous pour que la table soit responsive, c’est-à-dire qu’elle s’adapte aux différentes tailles d’écran ?
- Cette question vous permet de pratiquer la création de règles CSS pour améliorer l’apparence de la table de multiplication et d’explorer des techniques de mise en page CSS pour la rendre adaptative aux différentes tailles d’écran.
- CSS (styles.css) :
- CSS (styles.css) :
-
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
-
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.
-
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
- 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 :
- 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
- La variable
$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. - Les variables utilisées dans une boucle
foreach
ne sont pas locales à la boucle et gardent donc la valeur du dernier élément lu dans tout le script. - Pour plus d’information consultez l’article parcourir les tableaux en PHP
-
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.
-
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
- 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
while
do while
for
foreach
for (initialisation; condition; itération) {
// Instructions à exécuter
}
Solution
<?php
for($i=1;$i<7;$i++)
{
echo "<font color='blue'><h$i> $i:Titre de niveau $i</font></h$i>";
}
?>
Solution
body {
font-family: Arial, sans-serif;
text-align: center;
background-color: #f4f4f4;
margin: 0;
padding: 0;
}
h1 {
color: #333;
}
#numbers {
margin: 20px;
padding: 10px;
border: 2px solid #333;
background-color: #fff;
display: inline-block;
border-radius: 5px;
}
.even {
color: green;
}
.odd {
color: red;
}
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<link rel="stylesheet" type="text/css" href="styles.css">
<title>Affichage de nombres pairs et impairs</title>
</head>
<body>
<h1>Nombres pairs et impairs jusqu'à une constante</h1>
<div id="numbers">
<?php
define('CONSTANT', 10); // Définir la constante jusqu'à laquelle afficher
for ($i = 1; $i <= CONSTANT; $i++) {
if ($i % 2 == 0) {
echo "<p class='even'>$i (Pair)</p>";
} else {
echo "<p class='odd'>$i (Impair)</p>";
}
}
?>
</div>
</body>
</html>
Solution
table {
border-collapse: collapse;
width: 80%;
margin: 0 auto;
}
th, td {
border: 1px solid #000;
padding: 8px;
text-align: center;
}
th {
background-color: #f2f2f2;
}
tr:nth-child(even) {
background-color: #f2f2f2;
}
tr:nth-child(odd) {
background-color: #fff;
}
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<link rel="stylesheet" type="text/css" href="style.css">
<title>Table de multiplication</title>
</head>
<body>
<h1>Table de multiplication de 1 à 10</h1>
<table>
<tr>
<th>×</th>
<?php
for ($i = 1; $i <= 10; $i++) {
echo "<th>$i</th>";
}
?>
</tr>
<?php
for ($i = 1; $i <= 10; $i++) {
echo "<tr><th>$i</th>";
for ($j = 1; $j <= 10; $j++) {
echo "<td>" . ($i * $j) . "</td>";
}
echo "</tr>";
}
?>
</table>
</body>
</html>
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
<!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>
do
{
instructions
} while (condition(s))
Paramètres
<!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>
foreach($tableau as $valeur)
{
//bloc utilisant la valeur de l'élément courant
}
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/>';
}
?>
-
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>";
?>