PHP (PHP Hypertext Preprocessor)

Auteur: Mohamed CHINY Durée necessaire pour le cours de PHP (PHP Hypertext Preprocessor) Niveau recommandé pour le cours de PHP (PHP Hypertext Preprocessor) Supports vidéo non disponibles pour ce cours Exercices de renforcement disponibles pour ce cours Quiz disponible pour ce cours

Page 5: Les structures de contrôle

Toutes les pages

Les structures conditionnelles et boucles

Si vous avez déjà suivi le cours de Javascript, vous vous rendrez compte que ses structures de contrôle sont presque identiques à celle de PHP (avec quelques structures en plus sur ce dernier).

Structure if else

La structure if else permet de vérifier si une condition est vraie pour exécuter un traitement. Si la condition n'est pas vraie on peut exécuter un traitement alternatif.
Exemple:
<?php
   $a=1;
   if($a==1)
      echo "Un";
   else{
      if($a==2)
         echo "Deux";
      else
         echo "Autre";
   }
?>
Das ce cas on aura le résultat:
Un
Si le bloc de traitement après if ou else contient plusieurs instruction, alors il est obligatoire de le mettre entre des accolades.
Le code précédent peut être écrit comme ceci:
<?php
   $a=1;
   if($a==1)
      echo "Un";
   elseif($a==2)
      echo "Deux";
   else
      echo "Autre";
?>
Le mot clé elseif remplace la séquence else suivie de if. L'utilisation des accolades n'est donc pas nécessaire et le code devient plus court.

L'opérateur ternaire

L'opérateur ternaire permet de raccourcir la syntaxe de la structure de contrôle if else comme ceci:

(condition) ? (traitement1) : (traitement2)

Si la condition est vraie alors on fait le traitement1, sinon (la condition n'est pas vraie) alors on fait le traitement2.

Exemple:
<?php
   $a=1;
   echo ($a%2==0)?('$a est paire'):('$a est impaire');
?>
Dans ce cas on aura:
$a est impaire
Dans cet exemple, on affiche avec la fonction echo soit le message '$a est paire' ou '$a est impaire' suivant si la condition ($a%2==0) est vraie ou non.

Structure switch case

Si la structure if else permet, à la base, de tester deux cas pour une condition, la structure swith case, quant-à-elle, permet de tester autant de cas que l'on souhaite.

Si on reprend le premier exemple de cette page avec la structure swtich case le code devient:
<?php
   $a=1;
   switch($a){
      case 1 : echo "Un"; break;
      case 2 : echo "Deux"; break;
      default: echo "Autre";
   }
?>
On obtient toujours le résultat:
Un
switch($a) indique qu'on s’intéresse à la valeur de la variable $a. case 1 signifie: si $a vaut 1, suivie de deux points (:)puis le bloc d'instruction à exécuter si la condition est vraie. Le mot clé break signifie qu'on doit mettre fin à la structure une fois la condition satisfaite.

Le mot clé default signifie si aucun des teste précédent n'a abouti. Dans ce cas on procédera à un traitement par défaut.

Boucle for

La boucle for permet de faire un traitement d'une manière répétitif tant que la condition associée est vraie. En PHP elle est déclarée de la même manière qu'en Javascript.

Exemple:
<?php
   for($i=0;$i<10;$i++){
      echo "Bonjour<br />";
   }
?>
Dans ce cas, le traitement est fait 10 fois. En effet, la variable $i qui sert de compteur de la boucle, commence à 0 ($i=0) et fini à 9 ($i<10) en s'incrémentant de 1 à chaque fois ($i++). Les accolades sont là pour entourer le bloc d'instructions qui sera bouclé. Dans ce cas, ils sont facultatifs car nous n'avons déclaré qu'une seule instruction. Celle ci affichera le texte "Bonjour" suivi de la balise <br />. Bien entendu la balise <br /> sera exécutée par le navigateur ce qui engendrera un retour à la ligne après chaque message "Bonjour".

Le code précédent donne le ce résultat:
Bonjour
Bonjour
Bonjour
Bonjour
Bonjour
Bonjour
Bonjour
Bonjour
Bonjour
Bonjour
Jetons maintenant un coup d’œil sur le code source reçu par le navigateur:
Bonjour<br />Bonjour<br />Bonjour<br />Bonjour<br />Bonjour<br />Bonjour<br />Bonjour<br />Bonjour<br />Bonjour<br />Bonjour<br />
Et oui, bien sûr le code PHP a disparu mais il a généré un résultat qui contient aussi du code HTML.
Il est même possible de générer une page entière (ou une grande partie de celle ci) avec toutes ses balises HTML et styles CSS à l'aide de PHP.

Structure while

A l'instar de la boucle for, la boucle while permet de faire un traitement répétitif. En se servant de cette structure, le code précédent peut devenir:
<?php
   $i=0;
   while($i<10){
      echo "Bonjour<br />";
      $i++;
   }
?>
Le résultat sera le même que l'exemple précédent, ainsi que le code source vu par le client (reçu par le navigateur).

Tout d'abord, on initialise le compteur $i à 0 ($i=0). Tant que $i est inférieur à 10 (while($i<10)), alors on affiche le message "Bonjour" suivi d'un retour à la ligne. Mais il ne faut pas oublier d'incrémenter le compteur ($i++) pour ne pas tomber dans une boucle infinie.

Structure do while

La structure do while ressemble beaucoup à la structure while sauf que le test de la condition est placé après le traitement et non pas avant. Par conséquent, la première itération est toujours exécutée.

Avec la structure do While le code précédent devient:
<?php
   $i=0;
   do{
      echo "Bonjour<br />";
      $i++;
   }
   while($i<10);
?>

Mots-clés break et continue

Le mot clé break permet de mettre fin à une boucle prématurément. Si la boucle doit normalement exécuter toutes les itérations qui satisfont la condition décrite, l'arrêt prématuré survient avant la sa fin normale.

Exemple:
<?php
   for($i=0;$i<10;$i++){
      if($i==5)
         break;
      echo "Bonjour<br />";
   }
?>
Le résultat escompté est:

Bonjour
Bonjour
Bonjour
Bonjour
Bonjour
Dans ce cas, la boucle est censée afficher le message "Bonjour" 10 fois, mais le fait de placer le mot clé break après la condition if($i==5), arrête le programme au bout de 5 premières itérations.

Le mot-clé continue permet d'ignorer l'itération courante est passer immédiatement à l'itération suivante.

Exemple:
<?php
   for($i=0;$i<10;$i++){
      if($i==5)
         continue;
      echo "$i<br />";
   }
?>
Ce qui donne:

0
1
2
3
4
6
7
8
9
Vous avez certainement remarqué l'absence du nombre 5. Le mot-clé continue cesse l'itération en cours (qui correspond à $i=5) et passe immédiatement à l'itération suivante ($i=6).
Notez qu'il existe une autre structure de contrôle qui agit sur les tableaux. On aura l'occasion de la voir dans la page qui traite ce sujet.