Les boucles font partie des éléments de base à connaître absolument.
Exemple du forum où on afficherait une trentaine de message. Il serait fastidieux de dire "affiche le message 1 et le nom de son auteur", puis "affiche le message 2 et le nom de son auteur", etc.
On peut utiliser un système de boucle qui permet de dire une seule fois : "affiche les 30 messages et le nom de leurs auteurs".
Une boucle est une structure qui fonctionne sur le même principe que les conditions (
if… else
). Il y a beaucoup de similitudes avec le chapitre sur les conditions.
Une boucle permet de répéter plusieurs fois des instructions. C'est souvent indispensable.
Shéma de principe :
Voilà ce qui se passe dans une boucle :
- Comme d'habitude, les instructions sont d'abord exécutées dans l'ordre, de haut en bas (flèche rouge)
- A la fin des instructions, on retourne à la première (flèche verte)
- Et on recommence à lire les instructions dans l'ordre (flèche rouge)
- Et on retourne à la première (flèche verte)
- etc etc…
Problème dans ce shéma, les instructions seraient exécutées à l'infini !
C'est pour cela, quel que soit le type de boucle (
while
ou
for
), il faut indiquer une
condition. Tant que la condition est remplie, les instructions sont réexécutées.
Dès que la remplie n'est plus remplie, on sort de la boucle.
Mode opératoire avec une boucle simple
while
Code PHP
<?php
while ($continuer_boucle == true)
{
// instructions à exécuter dans la boucle
}
?>
while
peut se traduire par "tant que". Ici, on demande à PHP :"Tant que $continuer_boucle est vrai, exécuter ces instructions :"
Simple. Voici deux exemples pour voir à quoi cela peut servir.
1er exemple. Supposons que je sois puni et doive recopier 100 fois "Je ne dois pas regarder les mouches voler quand j'apprends le PHP."
Et bien, en PHP, cette punition se fait en un clin d'œil :
Code PHP
<?php
$nombre_de_lignes = 1;
while ($nombre_de_lignes <= 100)
{
echo ´Je ne dois pas regarder les mouches voler quand j\´apprends le PHP.<br />´;
$nombre_de_lignes++; // $nombre_de_lignes = $nombre_de_lignes +1
}
?>
La boucle pose la condition :
TANT QUE $nombre_de_lignes est inférieur ou égal à 100
Dans cette boucle, il y a 2 instructions :
- Le
echo
qui permet d'afficher le texte en PHP. A noter la balise <br /> à la fin qui permet d'aller à la ligne et donc chaque phrase sera écrite sur une seule ligne.
- Ensuite, une instruction bizarre
$nombre_de_lignes++;
(qui veut dire ce qui est commenté). C'est une façon plus courte d'ajouter 1 à la variable. Cela s'appelle l'incrémentation (qui signifie simplement qu'on a ajouté 1 à la variable).
 |
Toujours s'assurer que la condition sera remplie au moins une fois. Si ce n'est pas le cas, la boucle s'éxécutera à l'infini !
PHP refuse normalement de travailler plus d'une dizaine de secondes. Il s'arrêtera tout seul s'il voit que son travail dure trop longtemps et affichera un message d'erreur. |
Cet exemple n'est pas vraiment parlant sur un site web mais montre la technique de la boucle.
2ème exemple. Idem, on peut écrire une centaine de lignes mais chacune différente.
Cet exemple montre que la valeur de la variable augmente à chaque passage dans la boucle.
Code PHP
<?php
$nombre_de_lignes = 1;
while ($nombre_de_lignes <= 100)
{
echo ´Ceci est la ligne nº´ . $nombre_de_lignes . ´<br />´;
$nombre_de_lignes++;
}
?>
Ici, on affiche à chaque fois la valeur $nombre_de_lignes
qui augmente.
 |
L'astuce indiquée dans le chapitre sur les conditions marche aussi ici : on peut fermer la balise PHP ?>, écrire du texte en HTML, puis réouvrir la balise PHP <?php.
Cela évite d'utiliser une ou plusieurs instructions echo au milieu. Cette astuce sera utilisée de nombreuses fois. |
Complexe ne voulant pas dire ici "plus compliqué".
for
est un autre type de boucle, dans une forme un peu plus condensé et pratique à écrire. De ce fait,
for
est assez fréquemment utilisé.
Il faut savoir que
for
et
while
donnent le même résultat et servent à la même chose : répéter des instructions en boucle.
L'utilisation de l'un ou de l'autre est suivant.
for
se différencie de
while
au niveau de la première ligne. Reprenons l'exempel précédent :
Code PHP
<?php
for ($nombre_de_lignes = 1; $nombre_de_lignes <= 100; $nombre_de_lignes++;)
{
echo ´Ceci est la ligne nº´ . $nombre_de_lignes . ´<br />´;
}
?>
Après
for
, il y a des parenthèses avec dedans 3 éléments séparés par des
; :
- le premier sert à l'initialisation. C'est la valeur que l'on donne au départ à la variable (ici, elle vaut 1)
- le second, c'est la condition. Comme pour
while
, tant que la condition est remplie, la boucle est réexécutée. Dès que la condition ne l'est plus, la boucle s'arrête.
- et le troisième, c'est l'incrémentation qui permet d'ajouter 1 à la variable à chaque tour de boucle.
La boucle
while
est plus simple et plus flexible, on peut faire tous types de boucles avec mais on peut oublier de faire certaines étapes comme l'incrémentation de la variable.
En revanche,
for
est bien adapté.