7- Les structures itératives

Les structures itératives (communément appelées boucles) permettent d’effectuer une action tant qu’une condition est remplie et d’itérer sur une collection. Ainsi, la structure des boucles peut-être composée d’une affectation, d’une condition, et d’une action (contenue dans le corps). Les différents styles de boucles en PHP sont les suivants :

La boucle For

La boucle for est sans doute la plus utilisée des boucles, elle contient une initialisation, une condition et une incrémentation dans sa première partie et une action dans son corps (entre brackets). Pour effectuer l’itération, au premier tour, PHP affecte la variable $i, puis vérifie la condition, puis effectue le corps de la fonction. Dans les tours suivants, PHP incrémente $i ($i++) puis vérifie la condition, puis effectue le corps de la fonction. Dès que la condition est fausse, la boucle s’arrête et le curseur de PHP sort de la fonction ($i est donc unset et effacé).

Exemple :

for ($i = 5; $i < 8; $i++){
   echo 'i vaut ' . $i . ' ';
}
// écrira i vaut 5 i vaut 6 i vaut 7

On peut très bien se servir de for pour itérer sur une collection en affectant $i à 0 et en se servant de la taille du tableau (sizeof() ou count()) comme condition de sortie :

$tab = ['Jean', 'Toto', 'Océane'];
for ($i = 0; $i < sizeof($tab); $i++){
   echo 'ton prénom est ' . $tab[$i] . ' ';
}
// écrira : ton prénom est Jean ton prénom est Toto ton prénom est Océane

La boucle While

La boucle while fonctionne comme la boucle for, sauf qu’il faut effectuer l’affectation hors de la boucle et l’incrémentation dans la boucle (si incrémentation il y a). Cela peut être utile par exemple pour itérer sur un fichier en évaluant si la prochaine ligne existe.

Exemple :

$a = 6;
$b = 20;
while($a < $b){
   echo "a est plus petit que b ! ";
   $a++;
}// répètera 14 fois "a est plus petit que b"

La boucle Do while

La boucle do while permet d’effectuer un traitement, puis d’évaluer la condition pour (éventuellement) effectuer un nouveau traitement jusqu’à ce que la condition soit fausse. Cela permet de lancer une première action même si la condition est fausse contrairement à while.

Exemple :

do{
   $a+=1;
} while($a<3);

La boucle Switch Case

La boucle Switch Case permet d’évaluer une série de condition. Cette boucle est utile dans le cas où nous avons une petite série de conditions à évaluer (par exemple des valeurs) pour lesquelles nous aimerions effectuer des actions différentes. Il faut utiliser le mot-clé break pour sortir d’une action, et, si possible, proposer une action par défaut dans le default.

Exemple :

// Accompagnement du plat du jour
$jour = 'dimanche';
switch ($jour){
   case 'lundi':
       echo "Patates";
       break;
   case 'mardi':
       echo "Radis";
       break;
   case 'mercredi':
       echo "Haricots";
       break;
   case 'jeudi':
       echo "Lentilles";
       break;
   case 'vendredi':
       echo "Pâtes";
       break;
   case 'samedi':
       echo "Riz";
       break;
   case 'dimanche':
       echo "Courgettes";
       break;
   default :
       echo'Pâtes';
}

La boucle Foreach

La boucle foreach permet d’itérer uniquement sur un type Iterable comme un tableau. Cette boucle est extrêmement utile dans le cas où les clés de la collection ne sont pas des entiers, et si l’on ne connaît pas la taille de la collection.

$tab = ["Toto" => "36", "Tata" => "34"];
foreach($tab as $key => $value){
   echo $key . ' chausse du ' . $value . ' ';
}
// affichera Toto chausse du 36 Tata chausse du 34

Il est important de noter que $key et $value sont des copies de la clé et de la valeur de chaque itération de notre collection. Cela veut dire qu’à moins d’utiliser une référence vers la valeur par exemple (&$value), toute modification effectuée sur la clé ou la valeur n’aura qu’une portée à l’intérieur du foreach et ne modifiera pas la collection $tab.