### Boucle avec while

    while (condition) {
    	instruction;
    	...
    }

while exécute la commande ou le bloc de commandes tant que la condition est évalue comme true.

L'instruction break permet de forcer la sortie de la boucle.
Dans le cas de boucles imbriquées, break peut être suivi d'un nombre indiquant le nombre d'imbriquations à arrêter.

L'instruction continue permet de sauter à la prochaine itération dans la boucle.
Dans le cas de boucles imbriquées, continue peut être suivi d'un nombre indiquant le nombre d'imbriquations à sauter.

PHP supporte aussi les boucles do ... while avec la syntaxe :

    do {
    	instruction;
    	...
    } while (condition);

Exemple : boucle while
<!DOCTYPE html> <html lang="fr"> <head><title>boucle while</title></head> <body> <?php $nombre = 123; $divise = $nombre - 1; //------------------------------------------------------ while ($nombre % $divise != 0){ $divise --; if ($divise < 2) { break; } } echo 'Plus grand diviseur de ', $nombre, ' : ', $divise, '<hr>'; //------------------------------------------------------ // Recherche des nombres premiers inférieurs à 100 $nombre = 1; while ($nombre < 100) { $divise = 2; while($nombre % $divise != 0) { $divise ++; if ($divise >= $nombre) { break; } } if ($divise == $nombre) { echo '<br>', $nombre, ' est un nombre premier'; } $nombre ++; } ?> </body> </html>

### Boucle avec for

    for (expression_1; expression_2; expression_3) {
    	instruction;
    	...
    }
for est une instruction de boucle, qui répéte le bloc d'instruction tant que la condition contenue dans expression_2 est évaluée comme true. Le contenu de expression_1 est d'abord exécuté (une seule fois), puis expression_2 est évaluée. Si l'évaluation est vraie, les instructions du bloc sont exécutées, puis expression_3 est exécutée. Si l'évaluation est fausse, les instructions du bloc ne sont plus exécutées et le script continue par l'instruction directement aprés le bloc. |

L'instruction break permet de forcer la sortie de la boucle.
Dans le cas de boucles imbriquées, break peut être suivi d'un nombre indiquant le nombre d'imbriquations à arrêter.

L'instruction continue permet de sauter à la prochaine itération dans la boucle.
Dans le cas de boucles imbriquées, continue peut être suivi d'un nombre indiquant le nombre d'imbriquations à sauter.

Généralement :

- expression_1 sert à initialiser le compteur d'itération et éventuellement d'autres variables.
- expression_2 contient la condition d'éxécution de la boucle.
- expression_3 contient l'instruction d'incrément (ou de décrément) du compteur d'itération.

Exemple : boucle for
<!DOCTYPE html> <html lang="fr"> <head><title>boucle for</title></head> <body> <?php // Nombres premiers inférieurs à 100 for ($nombre = 1; $nombre < 100; $nombre ++) { for ($divise = 2; $divise < $nombre; $divise ++) { if ($nombre % $divise == 0) { break; } } if ($divise == $nombre) { echo "<br>$nombre est un nombre premier"; } } ?> </body> </html>

Plusieurs expressions peuvent être définies dans expression_1, expression_2 et expression_3. Il suffit de les séparer par des virgules :

    for ($i = 0, $j = 10; $i > 10, $j > 50; $i++, $j *= 2) {
    	...
    }

Exemple : boucle for
<!DOCTYPE html> <html lang="fr"> <head><title>boucle for</title></head> <body> <?php // Les 14 premiers nombres de la suite de Fibonacci for ($i = $a = 0, $b = 1; $i < 7; $i++, $a += $b, $b += $a) { echo '<br>', $a, '<br>', $b; } ?> </body> </html>

### Exercice : table de multiplications

En utilisant l'instruction for, écrivez la page permettant de générer le résultat ci-dessous.

table de multiplication

Une solution possible

Exercice : table de multiplication
<!DOCTYPE html> <html lang="fr"> <head> <title>Table de multiplication</title> <style> table { border-spacing: 0px; border: 1px solid; background-color: #ffc; } td, th { width: 20px; text-align: center; padding: 4px; border: 1px solid; } th { background-color: #FFFFBD; } </style> </head> <body> <?php echo '<h3>Table de multiplication</h3><table>'; // Première ligne echo '<tr><th> X </th>'; for ($i = 1; $i < 10; $i++) { echo '<th>', $i, '</th>'; } echo '</tr>'; // Le corps de la table for ($i = 1; $i < 10; $i ++) { // Première colonne echo '<tr><th>', $i, '</th>'; // colonnes de multiplication for ($j = 1; $j < 10; $j++) { echo '<td>', $i * $j, '</td>'; } echo '</tr>'; } echo '</table>'; ?> </body> </html>

### Boucle avec foreach

L'instruction foreach permet de faire des itérations sur un tableau. Cette instruction est particulièrement utile dans PHP où les tableaux peuvent avoir des clés alphanumériques (table de hachage ou dictionnaire) ou bien des indices numériques non consécutifs.

Un chapitre entier est consacré à l'utilisation des tableaux dans PHP et vous y trouverez toutes les informations détaillées sur la façon de réaliser des itérations.

L'instruction foreach définit une boucle exécutée automatiquement du premier au dernier élément d'un tableau. On ne peut donc pas choisir ni le premier élément "parcouru", ni l'élément de fin (à moins de sortir de la boucle avec une instruction break).

On présente ici les 2 syntaxes permettant d'accéder en consultation aux éléments d'un tableau.

    foreach ($tableau as $valeur) {
    	instruction
    	...
    }

Avec cette syntaxe, à chaque itération la valeur de l'élément courant du tableau $tableau est assignée à la variable $valeur. Le pointeur interne du tableau est avancé automatiquement d'un élément jusqu'à ce qu'il n'y ait plus d'élément dans le tableau.

    foreach ($tableau as $cle => $valeur) {
    	instruction
    	...
    }

Avec cette syntaxe, en plus de la valeur de l'élément courant assignée à la variable $valeur, la valeur de la clé de l'élément est assignée à la variable $cle.

Exemple : boucle foreach
<!DOCTYPE html> <html lang="fr"> <head><title>Boucle foreach</title></head> <body> <?php echo '<h3>Tableau indice numérique</h3>'; $tableau = array('Pierre', 'Paul', 'Jacques'); echo '<hr><b>Première syntaxe</b>'; foreach ($tableau as $valeur) { echo '<br>', $valeur; } echo '<hr><b>Deuxième syntaxe</b>'; foreach ($tableau as $cle => $valeur) { echo '<br>L\'élément ', $cle, ' contient ', $valeur; } ?> </body> </html>
Exemple : boucle foreach
<!DOCTYPE html> <html lang="fr"> <head><title>Boucle foreach</title></head> <body> <?php echo '<h3>Tableau indice alphanumérique</h3>'; $tableau = array('prénom' => 'François', 'nom' => 'Piat', 'bureau' => 409, 'tél' => '03.81.66.20.66'); echo '<hr><b>Première syntaxe</b>'; foreach ($tableau as $valeur) { echo '<br>', $valeur; } echo '<hr><b>Deuxième syntaxe</b>'; foreach ($tableau as $cle => $valeur) { echo '<br>L\'élément ', $cle, ' contient ', $valeur; } ?> </body> </html>