3 Les instructions de contrôle On retrouve dans PHP la plupart des instructions

3 Les instructions de contrôle On retrouve dans PHP la plupart des instructions de contrôle des scripts. Indispensables à la gestion du déroulement d’un algorithme quelconque, ces instructions sont présentes dans tous les langages. PHP utilise une syntaxe très proche de celle du langage C. Ceux qui ont déjà pratiqué un langage tel que le C ou plus simplement JavaScript seront en pays de connaissance. Pour les autres, une adaptation sera sans doute nécessaire. La version 5 de PHP a vu l’apparition de nouvelles instructions dédiées à la gestion des exceptions, comme try…catch ou throw, qui lui faisaient défaut jusqu’à présent. Les instructions conditionnelles Comme tout langage, PHP dispose d’instructions conditionnelles qui permettent d’orien- ter le déroulement d’un script en fonction de la valeur de données. 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. PHP 5 48 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 : <?php $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 contien- nent 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 <br />";} 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. 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’opérateur == ou encore === pour tester l’identité (même valeur et même type). Les instructions de contrôle CHAPITRE 3 49 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 ). • Pour les montants inférieurs ou égaux à 100 euros, la remise est de 5 %. Cette condi- tion est traitée par l’instruction else (repère ). ☛ Exemple 3-1. L’instruction if…else <?php $prix=55; if($prix>100) ← { echo "<b>Pour un montant d'achat de $prix €, la remise est de 10 % </b> ➥<br />"; echo "Le prix net est de ",$prix*0.90; } else ← { echo "<b>Pour un montant d'achat de $prix €, la remise est de 5 %</b><br />"; echo "<h3>Le prix net est de ",$prix*0.95,"</h3>"; } ?> 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} Cette construction s’interprète de la façon suivante : si l’expression 1 est évaluée à TRUE, le bloc 1 est exécuté ; dans le cas contraire, si l’expression 2 qui suit l’instruction elseif est évaluée à TRUE, le bloc 2 est exécuté. Dans les autres cas, c’est le bloc 3 qui est exécuté. Quelle que soit la situation, un seul bloc est exécuté. Dans l’exemple 3-11, vous voulez afficher le montant d’une remise calculée selon les modalités suivantes : • Si vous achetez un PC de plus de 1 000 euros, la remise est de 15 %. PHP 5 50 • Pour un PC de 1 000 euros et moins, la remise est de 10 %. • Pour les livres, la remise est de 5 %. • Pour tous les autres articles, la remise est de 2 %. La première instruction if…elseif…else (repères ,  et ) contrôle la catégorie du produit. La deuxième instruction if…else détermine le montant de la remise si le produit est un PC (repères  et ). L’indentation du code permet une lecture plus facile. Faute d’une telle indentation, il est difficile de distinguer à quelle instruction if se rapporte une instruction else. ☛ Exemple 3-2. Les instructions if imbriquées <?php // ********************if...elseif...else************** ** $cat="PC"; $prix=900; if($cat=="PC") ← { if($prix >= 1000) ← { echo "<b>Pour l'achat d'un PC d'un montant de $prix €, la remise est de ➥15 %</b><br />"; echo "<h3> Le prix net est de : ",$prix*0.85, "€ </h3>"; } else ← { echo "<b>Pour l'achat d'un PC d'un montant de $prix €, la remise est de ➥10 %</b><br />"; echo "<h3> Le prix net est de : ",$prix*0.90, "€ </h3>"; } } elseif($cat=="Livres") ← { echo "<b>Pour l'achat de livres la remise est de 5 %</ b><br />"; echo "<h3> Le prix net est de : ",$prix*0.95, "€ </h3>"; } else ← { echo"<b>Pour les autres achats la remise est de 2 %</ b><br />"; echo "<h3> Le prix net est de : ",$prix*0.98, "€ </h3>"; } ?> 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¤ Les instructions de contrôle CHAPITRE 3 51 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 "<b>Pour un montant d'achat de $prix €: $var </b><br />"; au lieu de : if($prix>100) { echo "<b>Pour un montant d'achat de $prix €, la remise est de 10 %</b><br />"; } else { echo "<b>Pour un montant d'achat de $prix €, la remise est de 5 %</b><br />"; } 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 ? <?php $ch = "Bonjour "; $sexe="M"; $ch .= ($sexe=="F")?"Madame":"Monsieur"; echo "<h2>$ch</h2>"; $nb = 3; $pmu ="Il faut trouver ".$nb; $mot = ($nb==1)?" cheval":" chevaux"; echo "<h3> $pmu $mot </h3>"; ?> Compte tenu des valeur des variables $sexe et $nb le résultat retourné est le suivant : Bonjour Monsieur Il faut trouver 3 chevaux PHP 5 52 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 : <?php $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; ........................ uploads/s3/ les-instructions-de-controle.pdf

  • 23
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager