Les structures de contrôle en PHP

 Les structures de contrôle 

Les structures de contrôle vont permettre de rompre l'exécution séquentielle du code, elles sont essentiellement de deux types :

  1. Les conditionnelles ou alternatives qui peuvent provoquer des "sauts en avant" dans l'exécution du code;
  2. Les répétitives ou itératives qui peuvent provoquer des "sauts en arrière" dans l'exécution du code.
 Les structures conditionnelles ou alternatives 

L'alternative simple (SI)

L'alternative simple d'utilisation universelle est le SI ALORS SINON (FIN SI représenté par l'accolade fermante).

Voici différents cas possibles d'utilisation et la syntaxe qui y est associée.

Le SI tout seul

if (vérification) {
     instruction 1;
     instruction 2;
}

Il faut savoir que :

  1. La vérification doit toujours être entre parenthèses, elle donnera toujours un résultat soit Vrai soit Faux;
  2. La vérification peut être une expression complexe faisant intervenir des opérateurs divers. On veillera alors à utiliser correctement les parenthèses supplémentaires;
  3. Une instruction unique ne nécessite pas l'utilisation d'accolades qui sont destinées à regrouper plusieurs instructions en un bloc d'une seule;
  4. Ce système d'accolades rend inutile l'utilisation du FIN SI;
  5. Veillez à la mise en page permettant la lisibilité de votre code pour vous et vos collaborateurs/trices.

Le SI - SINON

if (vérification) {
     instruction 1;
     instruction 2;
} else {
     instruction 3;
     instruction 4;
}

Il faut savoir que :

  1. Les instructions 1 et 2 ne se feront que quand la vérification donnera un résultat Vrai;
  2. Les instructions 3 et 4 ne se feront que quand la vérification donnera un résultat Faux.

Le SI - SINON SI - SINON

Il s'agit d'une facilité pour l'utilisation des conditionnelles en cascade. Cela fonctionne comme ceci :

if (vérification 1) {
     instruction 1;
     instruction 2;
} elseif (vérification 2) {
     instruction 3;
     instruction 4;
} else {
           instruction 5;
           instruction 6;
}

Il faut savoir que :

  1. Plusieurs elseif peuvent être imbriqués les uns dans les autres;
  2. Dès qu'une vérification Vraie est rencontrée :
    • le bloc correspondant d'instructions est exécuté;
    • l'entièreté de la structure est interrompue, toutes les vérifications suivantes sont abandonnées.
  3. les instructions 3 et 4 ne seront exécutées que si la vérification 1 donne Faux et la vérification 2 donne Vrai;
  4. Le bloc d'instructions du else final ne sera exécuté que si toutes les vérifications préalables ont donné Faux.

L'alternative multiple (switch)

La facilité des conditionnelles en cascade en est encore plus simple. Ca fonctionne comme ceci :

switch variable {
     case
valeur1 :
         instruction 1;
         instruction 2;
         break;
     case
valeur2 :
         instruction 3;
         instruction 4;
         break;
     case
valeur3 :
         instruction 5;
         instruction 6;
         break;
     default:

         instruction 7;
         instruction 8;
}

Il faut savoir que :

  1. Contrairement au cas précédent et suivant les versions du langage, le fait qu'une vérification donne Vrai ne provoque pas nécessairement l'abandon des vérifications suivantes. Le break; permet à coup sûr d'abandonner la structure dès qu'une vérification donnant Vrai est rencontrée;
  2. Le nombre de case est bien entendu libre et sera adapté à votre cas;
  3. default (facultatif) permet de prévoir une série d'instructions au cas où aucune vérification n'ait eu un résultat Vrai dans la structure.
 Les structures répétitives ou itératives 

La boucle DO ... WHILE ...

Cette boucle a les caractéristiques suivantes :

  1. La boucle est au moins effectuée une fois;
  2. La vérification donnant un résultat Faux permet de sortir de la boucle;
  3. Un break; permet de sortir prématurément de la boucle au cas d'un test quelconque positif.

do {
     instruction 1;
     instruction 2;
}
while (
vérification)

La boucle WHILE ...

Cette boucle est à rapprocher du Tant que en pseudo-code:

  1. La boucle peut ne jamais être exécutée;
  2. La vérification donnant un résultat Vrai permet d'effectuer la boucle;
  3. On veillera à ce que la vérification d'entrée de boucle soit valide, que les éléments nécessaires au test soient disponibles;
  4. Un break; permet de sortir prématurément de la boucle au cas d'un test quelconque positif.

while (vérification) {
     instruction 1;
     instruction 2;
}

La boucle FOR

Cette boucle est à rapprocher du Pour en pseudo-code, mais sa syntaxe est un peu plus ésotérique.

for (initialisation(s); expression; incrémentation) {
       instruction 1;
       instruction 2;
}

Ceci nécessite quelques explications :

  1. La zone d'initialisation permet d'initialiser la variable de la boucle en y plaçant la valeur initiale ($counter = 1; par exemple);
  2. Si vous avez d'autres variables à initialiser à l'entrée dans la boucle, ne vous gênez pas, c'est permis ($counter = 1, $somme = 0; par exemple);
  3. La zone "expression" contiendra la vérification de sortie de la boucle ($counter <= 10; par exemple), mais cela peut être une autre expression booléenne qui n'ait rien à voir avec le compteur;
  4. La boucle peut ne jamais être exécutée si la vérification de départ est directement fausse;
  5. On veillera à ce que la vérification d'entrée de boucle soit valide, que les éléments nécessaires au test soient disponibles;
  6. Tant que la vérification donne un résultat Vrai, la boucle continue à s'effectuer;
  7. La zone "incrémentation" contiendra les instructions d'incrémentation ou de décrémentation du compteur ($counter++) ou $counter--) par exemple);
  8. Un break; permet de sortir prématurément de la boucle au cas d'un test quelconque positif.

Bon travail.

Retour