Comme tout langage de programmation, on peut effectuer des boucles, d’une façon ou d’une autre. Elles vont seront nécessaire pour traiter un jeu de données par exemple. Tout comme les embranchements conditionnels, il existe deux façons d’écrire ces boucles. Voyons ces boucles une à une. J’utiliserais l’extension « a » pour désigner la première forme d’écriture, et l’extension « b » sa seconde forme.
For
La boucle « For », pour commencer, est généralement utilisée avec un compteur. Elle prend en compte 3 paramètres, chacun séparé par des « ; ». Le premier paramètre est celui d’initialisation des variables, le second paramètre la condition de sortie, et le troisième et dernier paramètre est l’opération à effectuer à la fin de chaque tour de boucle. Sachez que vous pouvez utilisez plusieurs variables d’initialisations et plusieurs opérations à effectuer en fin de boucle en les séparant par des « , ». Il est tout à fait possible de laisser tous les paramètres vide, permettant ainsi de créer une boucle infinie. Tout comme pour les embranchements conditionnels, des accolades sont obligatoires si vous souhaitez exécuter plus d’une instruction par tour de boucle.
For, exemple a :
<?php for($i = 0; $i < 10; $i = $i + 1) { echo $i; echo '<br>'; } ?>
For, exemple b :
<?php for($i = 0; $i < 10; $i = $i + 1): echo $i; echo '<br>'; endfor; ?>
Dans cet exemple, je déclare une variable « i » et l’initialise à « 0 », je souhaites que ma variable « i » n’atteigne pas « 10 », puis je demande à ma boucle « for » d’incrémenter « i » de « 1 » (« i » vaut « i » + « 1 »). La boucle for s’arrêtera toute seule lorsque la condition remplie (« $i < 10 ») ne sera plus vérifiée. Allez-y, testez l’un ou l’autre code, ça ne mange pas de pain.
While
La boucle « While » ne prend qu’un paramètre en considération, une condition. Tant que cette condition est remplie, la boucle continue. Tentons de compter de 0 à 9 inclus avec une boucle « While ».
While, exemple a :
<?php $i = 0; while($i < 10) { echo $i, '<br>'; $i = $i + 1; } ?>
While, exemple b :
<?php $i = 0; while($i < 10): echo $i, '<br>'; $i = $i + 1; endwhile; ?>
On a écrit la même chose que pour la boucle « For », mais en version « While ». Faites bien attention à ce que la condition du while, de telle sorte qu’elle puisse toujours, à un moment ou a un autre, se révéler fausse. J’ai dû explicitement incrémenter ma variable « i » de « 1 » à la fin de la boucle, autrement « i » aurait toujours été égal à « 0 » et il en aurait résulté une boucle infinie.
Do … While
Contrairement à la boucle « While », la boucle « Do … While » commence d’abord par faire un tour de boucle, puis c’est seulement à la fin de ce tour de boucle que la condition est vérifiée.
Do … While, exemple :
<?php $i = 0; do { echo $i, '<br>'; $i = $i + 1; }while($i < 10); ?>
On a toujours compté de « 0 » à « 9 », mais d’une façon encore différente. Il n’existe pas de seconde forme d’écriture pour cette boucle, donc accolades obligatoires.
Foreach
La boucle « Foreach » est une boucle faite pour énumérer les éléments d’une liste ou d’un tableau, lorsqu’on ne connaît pas ses index. Créons un tableau de chaines (reprenons mes animaux de compagnie), puis énumérons-le de deux façons différentes.
Foreach, exemples :
<?php $tableau = array('Chat', 'Chien', 'Furet'); foreach($tableau as $animal) echo $animal, '<br>'; echo '-------<br>'; foreach($tableau as $cle => $animal) { echo $cle, ' => ' , $animal; echo '<br>'; } ?>
Résultat de sortie :
Chat Chien Furet ------- 0 => Chat 1 => Chien 2 => Furet
Qu’est-ce que je viens de faire ? Je vous ai donné les deux façons d’écrire une boucle « foreach » pour énumérer les éléments d’un tableau donné. Au début, j’ai donc déclaré mon tableau, comme vu dans l’article sur les variables, puis j’ai énuméré le tableau « tableau » et nommé chaque élément de ce tableau « animal », via le mot clé « as ». Ensuite, j’ai récupéré la clé du tableau utilisée pour enregistrer la valeur de mon animal. Cela peut être utile lorsqu’on ne connaît pas l’index ou la clé d’enregistrement du tableau, mais qu’on souhaite le/la récupérer. La forme d’écriture a légèrement changée, en y ajoutant l’opérateur « => ».
Goto
Dernier genre de boucle possible, le « Goto ». C’est un genre de programmation assez ancien, et est complètement à proscrire. Il a été démontré à maintes reprises dans les débuts de l’informatique que l’instruction « goto » nous crée un « code spaghetti », résultant en de multiples sources de bogues. Je vais toutefois vous présenter une boucle effectuée avec un « goto », car même s’il ne devrait pas être utilisé, il peut toujours servir en de rares occasions.
Goto, exemple :
<?php $i = 0; monetiquette: echo $i, '<br>'; $i = $i + 1; if ($i < 10) goto monetiquette; ?>
J’ai tout d’abord déclaré et initialisé « i » à « 0 », puis j’ai ensuite créé une « étiquette ». J’affiche ensuite notre variable, j’incrémente « i » de « 1 », puis je teste si sa valeur est inférieur à 10. Si c’est le cas, je vais à l’étiquette déclarée précédemment « monetiquette ». Ce genre de programmation est bien entendu réalisable, mais est véritablement à proscrire de nos jours. On a toujours une façon d’écrire cela plus élégamment – d’une autre façon.
Conclusion
Une dernière petite note, quelque soit votre boucle (mise à part le « goto »), vous pouvez forcer la sortie avec le mot clé « break » ou forcer la boucle à réitérer de suite via le mot clé « continue ». Voila, vous savez à peu près tout ce qu’il y a à savoir sur les boucles. Rendez-vous au prochain tutoriel pour en apprendre plus sur les fonctions.