Cours ⇒ Cour PHP facebook twitter youtube

Les instructions de contrôle ⇒ & Les instructions conditionnelles



Les instructions conditionnelles

1-L'instruction if

L'instruction if est la plus simple et la plus utilisée des instructions conditionnelles.
Présente dans tous les langages de programmation, elle est essentielle en ce qu'elle permet
d'orienter l'exécution du script en fonction de la valeur booléenne d'une expression.
Sa syntaxe est la suivante :
if (expression) instruction;

Si l'expression incluse dans les parenthèses est évaluée à la valeur booléenne TRUE,
l'instruction qui suit est exécutée. Dans le cas contraire, l'exécution passe directement à
la ligne suivante

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 :


if(expression)
{
//bloc de code
}


La rédaction de l'expression est importante. Elle peut devenir complexe lorsqu'elle
comprend des opérateurs logiques associant ses différents composants.
Dans le code suivant :


$a=6;
if(is_integer($a) && ($a<10 && $a>5) && ($a%2==0) ) {echo "Conditions satisfaites";}
?>


l'expression composée :
(is_integer($a) && ($a<10 && $a>5) && ($a%2==0))
est évaluée à TRUE si $a répond simultanément aux trois conditions suivantes : être un
entier, être compris entre 5 et 10 et être divisible par 2, soit pour $a les valeurs possibles
de 6 et 8 uniquement. Le message ne s'affiche donc que dans ces cas.
PHP réalise une évaluation booléenne d'un grand nombre d'expressions qui ne contiennent
pas en elles-mêmes de variables booléennes. Il admet, par exemple, des expressions
du genre :
$a = 25;
if($a) {echo "La condition est vraie
";}
Dans ce cas, ce n'est pas la valeur de la variable $a qui est prise en compte mais son
évaluation booléenne, qui vaut TRUE. Nous avons déjà abordé ce point au chapitre 2. Le
lecteur pourra se reporter au tableau 2-6 pour revoir les conditions d'évaluation dans les
différents cas. hAUTE DE PAGE

 


L'instruction if...else


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.
Ne pas se tromper d'opérateur
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'exemple 3-1

suivant calcule le prix net après une remise variable en fonction du
montant des achats selon les critères suivants :
• Si le prix total est supérieur à 100 euros, la remise est de 10 %. Cette condition est
traitée par l'instruction if (repère 1).
• Pour les montants inférieurs ou égaux à 100 euros, la remise est de 5 %. Cette condition
est traitée par l'instruction else (repère 2).

Exemple 3-1. L'instruction if…else

$prix=55;
if($prix>100) ←1
{
echo "Pour un montant d'achat de $prix €, la remise est de 10 %

";
echo "Le prix net est de ",$prix*0.90;
}
else ←2
{
echo "Pour un montant d'achat de $prix €, la remise est de 5 %
";
echo "

Le prix net est de ",$prix*0.95,"

";
}
?>

 

Compte tenu de la valeur attribuée ici à la variable $a, le script affiche le résultat suivant :
Pour un montant d'achat de 55 ¤, la remise est de 5 %
Le prix net est de 52.25 ¤
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 :

if(expression1)
{//Bloc 1}
elseif(expression2)
{//Bloc 2}
else
{//Bloc 3}

Exemple 3-2. Les instructions if imbriquées

// ********************if...elseif...else************** **
$cat="PC";
$prix=900;
if($cat=="PC") ←1
{
if($prix >= 1000) ←2
{
echo "Pour l'achat d'un PC d'un montant de $prix €, la remise est de 15 %";
echo "

Le prix net est de : ",$prix*0.85, "€

";
}
else
{
echo "Pour l'achat d'un PC d'un montant de $prix €, la remise est de10 %";
echo "

Le prix net est de : ",$prix*0.90, "€";

}
}
elseif($cat=="Livres") ←4
{
echo "Pour l'achat de livres la remise est de 5 %
";
echo "

Le prix net est de : ",$prix*0.95, "€

";
}
else ←5
{
echo"Pour les autres achats la remise est de 2 %
";
echo "

Le prix net est de : ",$prix*0.98, "€

";
}
?>

 

Le résultat de ce script pour $cat à la valeur "PC" et la variable $prix à la valeur 900 donne
l'affichage suivant :
Pour l'achat d'un PC d'un montant de 900 ¤, la remise est de 10 %
Le prix net est de : 810¤

 L'opérateur ?

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.
Sa syntaxe est la suivante : $var = expression ? valeur1 : valeur2

Elle est équivalente à

 


if(expression) {$var=valeur1;}
else {$var=valeur2;}

Le premier exemple de calcul de remise pourrait s'écrire :
$var = ($prix>100)? "la remise est de 10 %":"la remise est de 5 %";
echo "Pour un montant d'achat de $prix €: $var
";
au lieu de :
if($prix>100)
{
echo "Pour un montant d'achat de $prix €, la remise est de 10 %
";
}
else
{
echo "Pour un montant d'achat de $prix €, la remise est de 5 %
";
}
Cet opérateur est généralement employé avec des expressions booléennes courtes.
L'exemple 3-3 adapte un texte en fonction de la valeur d'une variable, soit pour une
formule de politesse en fonction du sexe du visiteur, soit pour mettre au pluriel un mot en
fonction d'un nombre.

Exemple 3-3. L'opérateur ?

$ch = "Bonjour ";
$sexe="M";
$ch .= ($sexe=="F")?"Madame":"Monsieur";
echo "
$ch";

$nb = 3;
$pmu ="Il faut trouver ".$nb;
$mot = ($nb==1)?" cheval":" chevaux";
echo "
$pmu $mot";

?>

 

Compte tenu des valeur des variables $sexe et $nb le résultat retourné est le suivant :

Bonjour Monsieur
Il faut trouver 3 chevaux

 L'instruction switch...case

Supposez que vous vouliez associer un code de département avec son nom réel. Avec une
suite d'instructions if, vous écririez le script suivant :
$dept=75;
if($dept==75) echo "Paris";
if($dept==78) echo "Hauts de Seine";
if($dept==91) echo "Yvelines";
if($dept==93) echo "Seine Saint Denis";
?>
dans lequel la variable $dept proviendrait d'un formulaire, par exemple.
Ce code peut être simplifié sans multiplier les instructions if grâce à l'instruction
switch...case. Cette dernière permet de comparer la valeur d'une expression avec une
liste de valeurs prédéterminées par le programmeur et d'orienter le script en fonction de
la valeur de cette expression.


La syntaxe de cette instruction est la suivante :

switch(expression)
{
case valeur1:
//bloc d'instructions 1;
break;
case valeur2:
//bloc d'instructions 2;
break;
........................
case valeurN:
//bloc d'instructions N;
break;
default:
//bloc d'instructions par défaut;
break;
}

Exemple 3-4. L'instruction switch…case

$dept=75;
switch($dept)
{
//Premier cas
case 75:
case "Capitale":
echo "Paris";
break;
//Deuxième cas
case 78:
echo "Hauts de Seine";
break;
//Troisième cas
case 93:
case "Stade de france":
echo "Seine Saint Denis";
break;
//la suite des départements...
//Cas par défaut
default:
echo "Département inconnu en Ile de France";
break;
}
?>

 


Changer le fond
Oregionale Skin
7astuces
Sélectionnez un Fond (11)
7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces
Fond de contenu
7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces