Chapitre 11 - Les boucles itératives
Dans ce chapitre consacré aux boucles itératives, je vais en détailler deux (les plus usuelles). La troisième, la foreach sera abordée dans le sous-chapitre 13.3
A l'instar des conditions ( if ), l'usage des différentes boucles sera incontournable pour un site dynamique
Pour reprendre l'exemple de l'affichage de mes différentes catégories de vetements en BDD, pour par exemple les afficher dans une barre de navigation en tant qu'onglets, j'utiliserai la boucle while
Pour parcourir mon panier $_SESSION['panier'] (qui comme la syntaxe l'indique est un tableau/array), je ferai appel à la boucle for
-
11.1 La boucle While
Voici sa syntaxe particulière :
Avec une initialisation de $i, au préalable, à l'extérieur de la boucle. La condition étant à l'intérieur de la parenthèse et son incrémentation dans l'accolade qui suit
$i = 0; while($i <= 5){ echo "Tour " . $i . " --- "; $i++; }
Tour 0 --- Tour 1 --- Tour 2 --- Tour 3 --- Tour 4 --- Tour 5 ---Combinaison de la boucle while avec un if/else pour supprimer les tirets --- du dernier tour de boucle
$i = 0; while($i <= 5){ if($i == 5){ echo "Tour " . $i; }else{ echo "Tour " . $i . " --- "; } $i++; }
Tour 0 --- Tour 1 --- Tour 2 --- Tour 3 --- Tour 4 --- Tour 5Notez que l'incrémentation $i++ doit etre placée a l'extérieur de ma condition if
-
11.2 La boucle For
Pour la boucle for, initialisation, condition et incrémentation seront indiquées dans la parenthèse
for($i = 0; $i <= 5; $i++){ echo " Tour " . $i; }
Tour 0 Tour 1 Tour 2 Tour 3 Tour 4 Tour 5Variation pour la boucle for avec une décrémentation (incrémentation descendante)
Utile dans un formulaire pour choisir sa date de naissance, en débutant par les années les plus proches
echo "<form>"; echo "<select class='custom-select col-md-3'>"; echo "<option selected>Selectionnez l'année</option>"; for($i = date('Y'); $i >= date('Y') - 100; $i--){ echo "<option>$i</option>"; } echo "</select>"; echo "</form>";
Notez en ligne 4, l'usage de $i = date('Y'), fonction prédéfinie pour indiquer l'année en cours, puis $i >= date('Y') - 100 pour remonter à il y a cent ans, et bien sur le $i-- qui va décrémenter jusqu'à il y a cent ans
La boucle for imbriquée (pour créer un tableau)
La première, pour créer les (dix) lignes du tableau. La seconde, pour créer dix cellules par ligne
echo "<table class='table text-center col-md-6 mx-auto my-5' >"; for($ligne = 0; $ligne < 10; $ligne++){ echo "<tr>"; for($cellule = 0; $cellule < 10; $cellule++){ echo "<td>" . (10*$ligne+$cellule)+1 . "</td>"; } echo "</tr>"; } echo "</table>";
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100