Chapitre III : Les instructions de contrôle

Institut Supérieur des Études Technologiques
Page 1 sur 6Lecteur de document UniversityLib

Chapitre III : Les instructions de contrôle

Institut Supérieur des Études Technologiques · PHP Programming · notes

Browse all développement web documents

Chapitre III : Les instructions de contrôle

[Oct 2016]

I.

Introduction

Tous les scripts PHP sont une suite d'instructions. Une instruction peut être un

assignement, un appel de fonction, une instruction conditionnelle ou bien une instruction

qui ne fait rien (une instruction vide). Une instruction se termine habituellement par un

point-virgule (";"). De plus, plusieurs instructions peuvent être regroupées en bloc,

délimité par des accolades ("{}"). Un bloc est considéré comme une instruction. Les

différents types d'instructions sont décrits dans ce chapitre.

II. Structures conditionnelles

Une instruction conditionnelle est une instruction qui permet l’exécution d’une ou

plusieurs autres instructions spécifiées selon le résultat d’une condition établie.

Il faut remarquer qu’une instruction conditionnelle peut englober une autre et sont alors

appelées des instructions conditionnelles imbriquées.

if( ... ) {

} elseif {

} else {

}

1. if

L'instruction if est une des plus importantes instructions de tous les langages, PHP inclus.

Elle permet l'exécution conditionnelle d'une partie de code. Les fonctionnalités de

l'instruction if sont les même en PHP qu'en C :

if (expr)

instructions

PHP exécutera l'instruction si elle est TRUE sinon l'instruction sera ignorée.

Exemple :

if ($a > $b)

// affiche la phrase a est plus grand que b si $a est plus grand que $b

print "a est plus grand que b";

Souvent, vous voulez que plusieurs instructions soient exécutées après un branchement

l'instruction

conditionnel. Bien évidemment,

conditionnelle autant de fois que vous avez d'instructions à exécuter. A la place, vous

pouvez rassembler toutes les instructions dans un bloc.

Exemple :

il n'est pas obligatoire de répéter

if ($a > $b) {

print "a est plus grand que b";

$b = $a;

}

// affiche $a est plus grand que $b, et assigne la valeur de la variable $a à la variable $b

Vous pouvez imbriquer indéfiniment des instructions "if" les unes dans les autres, ce qui

permet une grande flexibilité dans l'exécution d'une partie de code suivant un grand

nombre de conditions.

1 Enseignants : Ouali Mohamed et Hedhli Houssem ISET de Bizerte

Classes : DSI2 Matière : Pgt côté serveur

Chapitre III : Les instructions de contrôle

[Oct 2016]

2. else

Souvent, vous voulez exécuter une instruction si une condition est remplie, et une autre

instruction si cette condition n'est pas remplie. C'est à cela que sert else. else fonctionne

après un if et exécute les instructions correspondantes au cas ou l'expression du if est

FALSE.

Exemple :

if ($a > $b) {

Advertisement

print "a est plus grand que b";

} else {

print "a est plus petit que b";

}

// affiche a est plus grand que b si la variable $a est plus grande que la variable $b, et a est

plus petit que b sinon

Les instructions après le else ne sont exécutées que si l'expression du if est FALSE, et si

elle n'est pas suivi par l'expression elseif.

3. elseif

elseif, comme son nom l'indique, est une combinaison de if et de else. Comme l'expression

else, il permet d'exécuter une instruction après un if dans le cas où le "premier" if est

évalué comme FALSE. Mais, à la différence de l'expression else, il n'exécutera

l'instruction que si l'expression conditionnelle elseif est évaluée comme TRUE.

Exemple :

if ($a > $b) {

print "a est plus grand que b";

} elseif ($a == $b) {

print "a est égal à b";

} else {

print "a est plus petit que b";

}

// affiche a est plus grand que b, a est égal à b ou a est plus petit que b

L'expression elseif est exécutée seulement si le if précédent et tout autre elseif précédent

est évalués comme FALSE, et que votre elseif est évaluée à TRUE.

4. if(): ... endif;

Le PHP propose une manière différente de rassembler des instructions à l'intérieur d'un if.

C'est le moyen le plus simple d'inclure des blocs de code HTML à l'intérieur d'un if, mais

il peut être utilisé dans n'importe quel contexte. Au lieu d'utiliser des accolades, vous

pouvez utiliser la forme suivante: if ( expr ) suivit de deux points (:), d'une ou plusieurs

instructions, le tout finissant par un endif;.

Exemple :

<?php $a=5 ?>

<?php if ($a==5): ?>

A = 5

<?php endif; ?>

2 Enseignants : Ouali Mohamed et Hedhli Houssem ISET de Bizerte

Classes : DSI2 Matière : Pgt côté serveur

Chapitre III : Les instructions de contrôle

[Oct 2016]

Dans l'exemple ci-desssus, le block HTML "A = 5" est inclus à l'intérieur d'un if en

utilisant cette nouvelle syntaxe. Ce code HTML ne sera affiché que si la variable $a est

égale à 5.

Cette autre syntaxe fonctionne aussi avec le else et elseif.

L'exemple suivant montre une structure avec un if, un elseif et un else utilisant cette autre

syntaxe:

if ($a == 5):

print "a est égal à 5";

print "...";

elseif ($a == 6):

print "a est égal à 6";

print "!!!";

else:

print "a n’est ni 5 ni 6";

endif;

5. switch

L'instruction switch équivaut à une série d'instructions if. Dans de nombreuses occasion,

vous aurez besoin de comparer la même variable (ou expression) avec un grand nombre de

valeur différentes, et d'exécuter différentes parties de code suivant la valeur à laquelle elle

est égale. C'est exactement à cela que sert l'instruction switch.

Advertisement

Les deux exemples suivants sont deux manières différentes d'écrire la même chose, l'une

en utilisant une série de if, et l'autre en utilisant l'instruction switch :

/ exemple 1 /

if ($i == 0) {

print "i égal 0"; }

if ($i == 1) {

print "i égal 1";

}

if ($i == 2) {

print "i égal 2"; }

/ exemple 2 /

switch ($i) {

case 0:

print "i égal 0";

break;

case 1:

print "i égal 1";

break;

case 2:

print "i égal 2";

break;

}

Il est important de comprendre que l'instruction switch exécute chacune des clauses dans

l'ordre. L'instruction switch est exécutée ligne par ligne. Au début, aucun code n’est

exécuté. Seulement lorsqu’une case est vérifiée, PHP exécute alors les instructions

correspondantes. PHP continue d'exécuter les instructions jusqu'à la fin du bloc

d'instructions du switch block, ou bien dès qu'il trouve l'instruction break. Si vous ne

pouvez pas utiliser l'instruction break à la fin de l'instruction case, PHP continuera à

exécuter toutes les instructions qui suivent.

/ exemple 3 /

switch ($i) {

case 0:

print "i égal 0";

3 Enseignants : Ouali Mohamed et Hedhli Houssem ISET de Bizerte

Classes : DSI2 Matière : Pgt côté serveur

Chapitre III : Les instructions de contrôle

[Oct 2016]

case 1:

print "i égal 1";

case 2:

print "i égal 2";

}

Dans cet exemple, si $i est égal à 0, PHP va exécuter quand même toutes les instructions

qui suivent. Si $i est égal à 1, PHP exécutera les deux dernières instructions. Et seulement

si $i est égal à, vous obtiendrez le résultat escompté, c'est-à-dire, l'affiche de "i égal 2.

Donc, l'important est de ne pas oublier l'instruction break.

Un "case" spécial est "default". Ce cas correspond à tous les cas qui ne fonctionnent pas

cités précédemment. Par exemple :

/ exemple 4 /

switch ($i) {

case 0:

print "i égal 0";

break;

case 1:

print "i égal 1";

break;

case 2:

print "i égal 2";

break;

Advertisement

default:

print "i n'est pas égal à 0, 1 ou 2";

}

Une autre chose à mentionner est que l'instruction case ne peut être appliquée qu’à une

expression de type scalaire, c'est-à-dire nombre entier, nombre à virgule flottante; et

chaîne de caractère. Les tableaux sont sans intérêt dans ce contexte-là.

III. Structures itératives (de boucles)

1. for

Les boucles for sont les boucles les plus complexes en PHP. Elle fonctionne comme les

boucles for du langage C. La syntaxe des boucles for est la suivante:

for (expr1; expr2; expr3) instruction

La première expression ( expr1 ) est évaluée (exécutée) quoi qu'il arrive au début de la

boucle.

Au début de chaque itération, l'expression expr2 est évaluée. Si l'évaluation vaut TRUE, la

boucle continue et l'instruction est exécutée. Si l'évaluation vaut FALSE, l'exécution de la

boucle s'arrête.

A la fin de chaque itération, l'expression expr3 est évaluée (exécutée).

Les expressions peuvent éventuellement laissées vide. Si l'expression expr2 est laissée

vide, cela signifie que c'est une boucle infinie (PHP comprend implicitement qu'elle vaut

4 Enseignants : Ouali Mohamed et Hedhli Houssem ISET de Bizerte

Classes : DSI2 Matière : Pgt côté serveur

Chapitre III : Les instructions de contrôle

[Oct 2016]

TRUE, comme en C). Cela n'ait pas vraiment très utile, à moins que vous souhaitiez

terminer votre boucle par l'instruction conditionnelle break.

Considérons les exemples suivants. Tous affichent les chiffres de 1 à 10:

/ exemple 1 /

for ($i = 1; $i <= 10; $i++) {

print $i;

}

/ exemple 2 /

for ($i = 1;;$i++) {

if ($i > 10) {

break;

}

print $i;

}

/ exemple 3 /

$i = 1;

for (;;) {

}

if ($i > 10) {

break;

print $i;

$i++;

}

/ exemple 4 /

for ($i = 1; $i <= 10; print $i, $i++) ;

PHP supporte aussi la syntaxe alternative suivante pour les boucles for :

for (expr1; expr2; expr3): instruction; ...; endfor;

2. while

La boucle while est le moyen le plus simple d'implémenter une boucle en PHP. Cette

boucle se comporte de la même manière qu'en C. L'exemple le plus simple d'une boucle

while est le suivant :

while (expr) instruction

La signification d'une boucle while est très simple. Le PHP exécute l'instruction tant que

l'expression de la boucle while est évaluée comme TRUE. La valeur de l'expression est

vérifiée à chaque début de boucle, et donc, si la valeur change durant l'exécution de

l'instruction, l'exécution ne s'arrêtera qu'à la fin de l'itération (chaque fois que le PHP

Advertisement

exécute l'instruction, on appelle cela une itération). De temps en temps, si l'expression du

while est FALSE avant la première itération, l'instruction ne sera jamais exécutée.

Comme avec le if, vous pouvez regrouper plusieurs instructions dans la même boucle

while en les regroupant à l'intérieur de parenthèses ou en utilisant la syntaxe suivante:

while (expr): instructions ... endwhile;

Les exemples suivants sont identiques, et affichent tous les nombres de 1 à 10:

/ exemple 1 /

$i = 1;

5 Enseignants : Ouali Mohamed et Hedhli Houssem ISET de Bizerte

Classes : DSI2 Matière : Pgt côté serveur

Chapitre III : Les instructions de contrôle

[Oct 2016]

while ($i <= 10) {

print $i++;

/* La valeur affiche est $i avant l'incrémentation

(post-incrémentation) */

}

/ exemple 2 /

$i = 1;

while ($i <= 10):

print $i;

$i++;

endwhile;

3. do..while

Les boucles do..while ressemblent beaucoup aux boucles while, à la différence que

l'expression est testée à la fin de chaque itération au lieu du début. La principale différence

par rapport à la boucle while est que la première itération de la boucle do..while est

toujours exécutée (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).

Il n'y a qu'une syntaxe possible pour les boucles do..while :

$i = 0;

do {

print $i;

} while ($i>0);

La boucle ci-dessus ne va être exécutée qu'une seule fois, car lorsque l'expression est

évaluée, elle vaut FALSE (car la variable $i n'est pas plus grande que 0) et l'exécution de

la boucle s'arrête.

4. break

L'instruction break permet de sortir d'une boucle.

$i = 0;

while ($i < 10) {

if ($i == 5) {

break;

}

$i++;

}

5. continue

L'instruction continue est utilisée dans une boucle afin d'éluder les instructions de

l'itération courante afin de passer directement à l'itération suivante.

for ($i=0; $i<10; $i++)

{

if ($i==5)

continue;

print "$i <br>";

}

6 Enseignants : Ouali Mohamed et Hedhli Houssem ISET de Bizerte

Classes : DSI2 Matière : Pgt côté serveur