Programmation PHP/Structures de contrôle
Une structure conditionnelle fonctionne de manière à ce que si la valeur de la condition est TRUE alors tel schéma est appliqué, et si la valeur est FALSE, un autre schéma est réalisé.
Sections |
Les structures conditionnelles [modifier]
if - else [modifier]
La structure la plus simple se présente sous la forme d'un if() {} et d'un else {}. Le if teste une condition :
- Si elle est réalisée le code entre les accolades après le if sera exécuté, puis le serveur passera au code après le
else {}; - Si elle n'est pas réalisée c'est ce qui est entre les accolades suivant le
elsequi sera exécuté.
<?php if (condition) { instruction au cas où la condition serait réalisée; } else { instruction au cas où la condition ne serait pas réalisée; } ?>
Emploi de if seul [modifier]
Un if peut être employé seul, en fait le else étant l'alternative, le code à exécuter par défaut, on peut s'en passer pour n'exécuter un code seulement si une condition est réalisée.
<?php if (condition) { instruction au cas où la condition est réalisée; } //si la condition n'est pas réalisée, il ne se passe rien ?>
Emploi de elseif [modifier]
Lorsqu'une condition n'est pas réalisée, plutôt que de passer directement à l'exécution du code par défaut (déclaré par else), il peut être plus judicieux de tester une autre condition (déclarée par elseif). En clair la structure est similaire à un ordre de préférence :
| Symboliquement | Traduction en code |
|---|---|
Soit une condition 1 La condition 1 est elle réalisée ? OUI code 1 (puis sortie de la structure hypothétique) NON la condition 2 est elle réalisée ? OUI code 2 (puis sortie de la structure hypothétique) NON la condition 3 est elle réalisée ? OUI code 3 (puis sortie de la structure hypothétique) NON ... (aucune des conditions annexes n'ont été vérifiées) Par défaut exécutons le code défaut |
<?php condition 1 if(condition 1) { code 1; } elseif(condition 2) { code 2; } elseif(condition 3) { code 3; } ... else { code par défaut; } ?> |
Imbrication [modifier]
On peut imbriquer les if les uns dans les autres. Simplement lorqu'un if imbriqué aura fini d'être exécuté, il retournera à l'étape logique suivante du rang hiérarchique supérieur.
<?php if() { if() { } elseif() { } else { } } elseif() {} else {} ?>
Notons que dans ce cas mieux vaut imaginer tous les cas de figure pour ne pas se retrouver avec une structure hypothétique vacillante en ce que la situation n'aura pas été prévue.
switch [modifier]
Lorsque l'on teste des conditions en nombre important sur une même valeur, l'utilisation de if est fastidieuse. Il existe bien heureusement une structure créée à cet usage : le switch. On déclare la variable à tester avec switch : switch($surlasellette) {}. Dans ce switch on utilise case pour déclarer la valeur de la variable pour laquelle une action est envisagée : case "valeur" : (ici ne pas oublier les deux points !) une suite d'instructions s'ensuit et est généralement clôturée par break; pour que les autres cas ne soient pas traités à la suite. La valeur par défaut, corollaire du else pour if, est introduite par default :.
| Avec if | Traduction en switch |
|---|---|
<?php $valeur = "testable"; if($valeur == "ce n'est pas cela") {echo "ok";} elseif($valeur == "ce n'est pas non plus cela") {echo "ok";} elseif($valeur == "c'est encore moins cela") {echo "ok";} else {echo "pas d'accord";} ?> |
<?php switch (variable) { case valeur_1 : instruction(s); break; case valeur_2 : instruction(s); break; ... default : instruction(s); } |
switch s'imbrique aussi comme if. Le plus important étant de ne pas oublier de mettre l'instruction break avant un nouveau case.
Les boucles [modifier]
Une boucle est une instruction qui exécute un code tant qu'une condition établie est vérifiée. Si la condition est toujours vérifiée, on se trouve dans une boucle infinie. Les boucles permettent le parcours des tableaux et d'utiliser des données rendues sous la forme de tableau par une fonction de php dialoguant par exemple avec un autre langage. Il en existe de 3 types :
while() { }for() {}foreach() {}
while [modifier]
while est un mot anglais signifiant "tant que" en français. Le programme exécute une routine tant que la condition est vraie.
<?php while (condition) { instructions(s); } ?>
for [modifier]
for est un mot anglais signifiant "pour" en français. Le programme exécute une routine pour des valeurs d'une variable qui vérifient une certaine condition. Généralement cette condition est de type "intervalle", c'est-à-dire pour des valeurs plus petites qu'une borne.
for (premier élément ; deuxième élément ; troisième élément){instruction;}
- Le premier élément est exécuté au début de la boucle dans tous les cas.
- Le second élément (la condition) est testé avant chaque exécution de l'instruction ou itération, s'il renvoie
TRUEl'instruction sera exécutée, siFALSEest renvoyé on sort de la boucle. - La dernière expression est exécutée après chaque itération.
<?php for(première expression; seconde expression; troisième expression) { instruction; } ?>
Attention la structure dans la parenthèse est for( ; ; )
foreach [modifier]
Les boucles foreach constituent une manière simple de parcourir des tableaux. Il existe 2 syntaxes :
- La plus simple s'intéresse aux clés dans les tableaux. Le type de ces clés dépend des valeurs contenues dans le tableau.
foreachsimplifie une tache qui aurait certes été possible avecfor, mais fastidieuse :
| Avec for | Avec foreach |
|---|---|
<?php $array = array('valeur1', 'valeur2', 'valeur3'); for($i = 0; $i < count($array); $i++) { echo $array[$i]; //renvoie "valeur1valeur2valeur3" } ?> |
<?php $array = array('valeur1', 'valeur2', 'valeur3'); foreach($array as $value) { echo $value; //renvoie "valeur1valeur2valeur3" } ?> |
as signifiant "comme", on récupère une variable contenant la valeur dans la cellule correspondante.
- La seconde se penche d'avantage sur les tableaux associatifs du type
<?php $array = array( "ville" => "Montargis", "température" => "15 degrés" ); ?>
Ainsi on récupère le nom de la clé et la valeur du champ. En fait la structure $cle => $valeur est celle de la déclaration de l'array.
<?php foreach($array as $cle => $valeur) { commandes; } ?>
Il est possible d'itérer des objets depuis PHP 5.
