4- Les instructions de contrôle
1- Les instructions conditionnelles :
Comme tout langage, PHP dispose d’instructions conditionnelles qui permettent d’orienter le déroulement d’un script en fonction de la valeur de données.
Les structures conditionnelles ou tout simplement les conditions permettent d’exécuter une partie de code selon si une condition est vérifiée ou non.
L’INSTRUCTION if
En PHP, la condition la plus minimaliste possible requiert l’instruction if
. En français, on peut tout simplement traduire cette instruction par si.
Ci-après la syntaxe d’une condition if
.
Sa syntaxe est la suivante :

<?php
$a = 2;
if($a > 1)
echo 'La variable $a est plus grand que 1.';
?
Nous avons donc l’instruction if
puis entre parenthèses le test de la condition. Chaque test est converti en valeur booléenne. Par conséquent, si le test vaut true
, alors le PHP exécutera le code à l’intérieur de la condition, si le test vaut false
, alors il sera ignoré. Il est possible de faire tout un tas de tests complètement différents avec divers opérateurs de comparaisons qui remplissent des fonctions bien différentes. Nous resterons pour le moment sur des opérateurs triviaux comme <
ou >
.
L’instruction if peut être suivie d’un bloc d’instructions délimité par des parenthèses qui sera entièrement exécuté dans les mêmes conditions :

<?php
$a = 2;
if($a > 1) {
echo 'La variable $a est plus grand que 1.';
$b = 0;
}
?>
Il est possible d’imbriquer les conditions. La syntaxe des instructions if
n’est pas impactée. Ci-dessous un exemple.
<?php
$a = 2;
if($a > 1) {
echo 'La variable $a est plus grand que 1.';
$b = 0;
if($b < 2) {
echo '<br />La variable $b est plus petite que 2.';
}
}
?>
Une erreur courante consiste à confondre l’opérateur de comparaison == avec l’opérateur d’affectation =. Dans les expressions conditionnelles, pour tester l’égalité de deux valeurs il faut employer l’opérateur == ou encore === pour tester l’identité (même valeur et même type).
L’INSTRUCTION
<code><strong><mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-luminous-vivid-orange-color">ELSE</mark></strong>
et <strong><mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-luminous-vivid-orange-color">ELSEIF</mark></strong>
L’instruction if…else permet de traiter le cas où l’expression conditionnelle est vraie et en même temps d’écrire un traitement de rechange quand elle est évaluée à FALSE, ce que ne permet pas une instruction if seule. L’instruction ou le bloc qui suit else est alors le seul à être exécuté. L’exécution continue ensuite normalement après le bloc else.
Le bloc qui suit les instructions if ou else peut contenir toutes sortes d’instructions, y compris d’autres instructions if…else. Nous obtenons dans ce cas une syntaxe plus complexe, de la forme :

<?php
$a = 2;
if($a > 1) {
echo 'La variable $a est plus grand que 1.';
} else {
echo 'La variable $a est plus petit ou égale à 1.';
}
?>
Comme son nom l’indique, l’instruction elseif
est une combinaison de l’instruction if
et else
. Le bloc d’instruction du elseif
est exécuté uniquement si le test de condition du premier if
n’est pas vérifié et vaut donc false
. Seulement, à la différence de else
, le bloc d’instruction du elseif
ne s’exécutera que si le test de sa condition est vérifié et vaut donc true
.
<?php
$a = 5;
if($a < 1) {
echo 'La variable $a est plus petit que 1.';
} elseif($a > 4) {
echo 'La variable $a est plus grand que 4.';
} else {
echo 'La variable $a est entre 1 et 4.';
}
?>
Les opérateurs ? et ??
L’opérateur ? Permet de remplacer avantageusement une instruction if…else en évaluant une expression et en attribuant à une variable une première valeur si la condition est vraie ou une autre valeur si elle est fausse.
- Opérateur
?
(Ternaire) :
L’opérateur ternaire ?
permet de créer une expression conditionnelle en évaluant une condition et en retournant une valeur en fonction de cette condition. Sa syntaxe est la suivante :
$resultat = (condition) ? valeur_si_vrai : valeur_si_faux;
Exemple :
$age = 18;
$message = ($age >= 18) ? "Majeur" : "Mineur";
echo $message; // Affiche "Majeur"
- Opérateur
??
(Null Coalesce) :
L’opérateur ??
est utilisé pour fournir une valeur de secours (fallback) si une variable est nulle (null). Il permet de vérifier si une variable existe et, si elle est nulle, de fournir une valeur par défaut. Sa syntaxe est la suivante :
$resultat = $variable ?? valeur_par_defaut;
Exemple :
$nom = "John";
$prenom = null;
$nom_complet = $prenom ?? "Prénom inconnu";
echo "Nom complet : " . $nom . " " . $nom_complet; // Affiche "Nom complet : John Prénom inconnu"
- Dans cet exemple, l’opérateur
??
vérifie si la variable$prenom
est nulle, et si c’est le cas, il utilise la valeur par défaut « Prénom inconnu ».
Ces deux opérateurs sont très utiles pour gérer les valeurs nulles de manière concise et élégante dans votre code PHP.
L’instruction switch…case
L’instruction switch...case
en PHP permet de gérer plusieurs cas (valeurs) pour une variable et d’exécuter un bloc de code en fonction de la valeur de la variable.
La syntaxe de cette instruction est la suivante :

Voici un exemple de code :
<?php
$jourDeLaSemaine = "Lundi";
switch ($jourDeLaSemaine) {
case "Lundi":
echo "C'est le début de la semaine.";
break; // La clause "break" est importante pour éviter l'exécution des autres cas.
case "Mardi":
echo "C'est le deuxième jour de la semaine.";
break;
case "Mercredi":
echo "C'est le milieu de la semaine.";
break;
case "Jeudi":
echo "C'est presque le week-end.";
break;
case "Vendredi":
echo "C'est le dernier jour de la semaine de travail.";
break;
case "Samedi":
case "Dimanche":
echo "C'est le week-end !";
break;
default:
echo "Ce n'est pas un jour valide.";
break;
}
?>
EXERCICES (LES CONDITIONS (IF
, ELSE
ET ELSEIF
))
EXERCICE 5
Déclarer une variable $sexe
qui contient une chaîne de caractères. Créer une condition qui affiche un message différent en fonction de la valeur de la variable.
EXERCICE 6
Déclarer une variable $budget
qui contient la somme de 1 553,89 €. Déclarer une variable $achats
qui contient la somme de 1 554,76 €. Afficher si le budget permet de payer les achats.
EXERCICE 7
Déclarer une variable $age
qui contient la valeur de type integer de votre choix. Réaliser une condition pour afficher si la personne est mineure ou majeure.
EXERCICE 8
Déclarer une variable $heure
qui contient la valeur de type integer de votre choix comprise entre 0 et 24. Créer une condition qui affiche un message si l’heure est le matin, l’après-midi ou la nuit.
CORRECTION
EXERCICE 5
<?php
$sexe = 'homme';
if($sexe == 'femme') :
echo 'Bonjour Madame.';
elseif($sexe == 'homme') :
echo 'Bonjour Monsieur.';
else :
echo 'Bonjour sexe inconnu.';
endif;
?>
EXERCICE 6
<?php
$budget = 1553.89;
$achats = 1554.76;
if($budget >= $achats) :
echo 'Le budget ('.$budget.' €) permet de payer tous les achats ('.$achats.' €).';
else :
echo 'Le budget ('.$budget.' €) ne permet pas de payer tous les achats ('.$achats.' €).';
endif;
?>
EXERCICE 7
<?php
$age = 19;
if($age >= 18)
echo 'Vous êtes majeur.';
else
echo 'Vous êtes mineur.';
?>
EXERCICE 8
<?php
$heure = 14;
if($heure < 0 || $heure > 23) :
echo 'Houla, cette heure est incorrecte.';
elseif($heure >= 7 && $heure < 12) :
echo 'Bonne matinée.';
elseif($heure >= 12 && $heure < 22) :
echo 'Bonne après-midi.';
else :
echo 'Bonne nuit.';
endif;
?>
2- Les instructions de boucle
En PHP, comme dans bien d’autres langages de programmation, les boucles sont des éléments clés. Il est essentiel de les maîtriser pour développer efficacement. Que l’on développe un simple site web, une fusée ou un jeu vidéo, on a besoin de boucles.
Les boucles permettent de répéter l’exécution d’une portion de code un certain nombre de fois en fonction d’un test de condition. Tant que ce dernier est vérifié, alors la portion de code s’exécute. Pour une exécution d’une portion de code, on parle d’une itération de la boucle. Quel que soit le type de boucles utilisé, il sera nécessaire d’employer une condition pour mettre fin à la boucle.
En PHP, il existe 4 boucles différentes. Elles remplissent la même finalité mais comportent des différences.
for
while
do...while
foreach
La boucle for
Présente dans de nombreux langages, 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.
Elle est largement utilisée car elle a des avantages indéniables, mais a une syntaxe assez particulière, surtout pour les débutants. Tout d’abord, l’instruction for
pourrait être traduite en français par « pour ».
Sa syntaxe est la suivante :

- expression1: Le premier élément de la boucle for correspond tout simplement à la déclaration de la variable pour initiation
- expression2: pour le deuxième élément, la boucle
for
a besoin comme toutes les boucles d’un test de condition. - expression3: Le dernier élément correspond à une incrémentation ou une décrémentation de variable.
Les éléments sont séparés par des points virgules <strong>;</strong>
.
Exemple:
<?php
for($i = 0;$i < 10;$i++) {
echo 'La variable $i a '.$i.' comme valeur.<br />';
}
?>
La boucle while
L’instruction while
pourrait être traduite en français par « tant que ». Si on vulgarise l’utilisation de cette boucle, on peut dire que cette dernière va exécuter la même portion de code tant que la condition est vérifiée.

Exemple:
<?php
$z = 0;
while($z < 10) {
echo 'La variable $z a '.$z.' comme valeur.<br />';
$z++;
}
?>
L’exemple démarre avec la déclaration de la variable $z
avec une valeur de zéro.
La boucle va donc exécuter la portion de code entre les accolades {
et }
tant que la condition est vérifiée.
On demande donc à notre boucle while
d’afficher une chaîne de caractères et d’incrémenter $z
, tant que $z
est strictement inférieure à 10. L’étape d’incrémentation de la variable $z
est indispensable dans notre cas, car sinon le test de condition serait éternellement non vérifié, et la boucle ne s’arrêterait jamais. Si c’est le cas, on appelle ça une boucle infinie.
La boucle do…while
L’instruction do...while
pourrait être traduite en français par « faire… tant que ». La boucle do...while
est très proche de la boucle while
. La différence est que la boucle do...while
commence par exécuter sa portion de code avant de vérifier sa condition alors que la boucle while
fait l’inverse.
La syntaxe de la boucle do…while est la suivante :

Un exemple pour comparer les deux et tout deviendra plus clair.
<?php
$z = 2;
do {
echo 'La variable $z a '.$z.' comme valeur.';
} while($z < 1);
?>
Dans l’exemple de gauche avec do...while
, la boucle commence par exécuter une fois sa portion de code. La chaîne de caractères s’affiche puis le test de condition s’effectue. En l’occurence la variable $z
n’a pas une valeur strictement inférieure à 1, la boucle s’arrête donc.
La boucle foreach
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. Sa syntaxe est variable selon que vous souhaitez récupérer seulement les valeurs ou les valeurs et les clés (ou les indices).
Pour lire les valeurs seules, la première syntaxe est la suivante :

$personne = ["nom" => "Doe", "prénom" => "John", "âge" => 30];
foreach ($personne as $cle => $valeur) {
echo "$cle : $valeur<br>";
}
Remarque :
Foreach et les objets
Depuis PHP 5, vous pouvez lire l’ensemble des noms et des valeurs des propriétés d’un objet à l’aide d’une boucle foreach comme nous le faisons pour un tableau.
Sortie anticipée des boucles
Vous pouvez avoir besoin d’arrêter une boucle avant son terme normal. Pour cela, vous disposez des instructions break et continue, qui permettent de réaliser un arrêt partiel ou total.
L’instruction break
Il est possible d’arrêter complètement une boucle for, foreach ou while avant son terme normal si une condition particulière est vérifiée, à l’aide de l’instruction break. Le script n’est pas arrêté, comme avec l’instruction exit, et seule la boucle en cours se termine.
L’instruction continue
À la différence de l’instruction break, l’instruction continue n’arrête pas la boucle en cours mais seulement l’itération en cours. La variable compteur est incrémenté immédiatement, et toutes les instructions qui suivent le mot-clé continue ne sont pas exécutées lors de l’itération en cours.
for ($i = 1; $i <= 10; $i++) {
if ($i == 5) {
break; // Sort de la boucle lorsque $i atteint 5
}
if ($i % 2 == 0) {
continue; // Passe à l'itération suivante si $i est pair
}
echo "$i<br>";
}
EXERCICES (LES BOUCLES)
EXERCICE 9
En utilisant la boucle while
, afficher tous les codes postaux possibles pour le département 77.
EXERCICE 10
En utilisant la boucle for
, afficher la table de multiplication du chiffre 5.
EXERCICE 11
En utilisant deux boucles for
, écrire un script qui produit le résultat ci-dessous.
EXERCICE 12
Déclarer une variable avec le nom de votre choix et avec la valeur 0. Tant que cette variable n’atteint pas 20, il faut :
- l’afficher ;
- incrémenter sa valeur de 2 ;
Si la valeur de la variable est égale à 10, la mettre en valeur avec la balise HTML appropriée.
CORRECTION
EXERCICE 9
<?php
$i = 77000;
while($i <= 77999) {
echo $i.' ';
$i++;
}
?>
EXERCICE 10
<?php
$n = 5;
for($i = 1;$i <= 10;$i++) {
echo $n.' x '.$i.' = '.($n * $i).' <br />';
}
?>
EXERCICE 11
<?php
for($i = 1;$i <= 5;$i++) {
for($k = 1;$k <= $i;$k++) {
echo $i;
}
echo '<br />';
}
?>
EXZECICE 12
<?php
$k = 0;
while($k <= 20) {
if($k == 10) {
echo '<strong>'.$k.'</strong>';
} else {
echo $k;
}
echo '<br />';
$k = $k + 2;
}
?>