Back

Les structures itératives en PHP

Les structures itératives en PHP

  1. Objectifs

    • Connaitre les structures itératives en PHP
  2. Introduction

    • Une structure itérative (ou boucle) est un bloc d’instructions dont le but est répéter une opération tant qu’une ou plusieurs conditions sont vérifiées. PHP en distingue 4 :
      • while
        do while
        for
        foreach
    • Les boucles permettent de répéter des opérations élémentaires un grand nombre de fois sans avoir à réécrire le même code. Selon l’instruction de boucle utilisée, le nombre d’itérations peut être défini à l’avance ou être déterminé par une condition particulière.




  3. La boucle for

    • Le nombre d’itérations est connu d’avance.

    • La boucle for permet d’exécuter plusieurs fois la même instruction ou le même bloc sans avoir à réécrire les mêmes instructions.
      1. Syntaxe
        • for(expression1; expression2; expression3)
          { //instruction ou bloc;
          }
        • expression1 est toujours évaluée. Il s’agit généralement de l’initialisation d’une ou plusieurs variables servant de compteur pour la boucle.
        • expression2 est ensuite évaluée avec une valeur booléenne : si elle vaut TRUE, la boucle continue et les instructions comprises dans le bloc sont exécutées, sinon la boucle s’arrête.
        • expression3 est exécutée à la fin de chaque itération. Il s’agit le plus souvent d’une instruction d’incrémentation de la variable compteur.
      2. Application
        • Créer un script PHP qui affiche six niveaux de titre utilisant les balises <h1> à <h6> et une couleur bleue en deux lignes de code seulement.
        • <?php 
          for($i=1;$i<7;$i++)
          { 
              echo "<font color='blue'><h$i> $i:Titre de niveau $i</font></h$i>";
          }
          ?>
        • Le résultat de la boucle est illustré à la figure suivante:
  4. La boucle While

    • Présentation
      • En anglais "while" signifie “Tant que”. Pour créer une boucle , il faut donc utiliser ce mot clé suivi d’une indication qui dit quand la boucle s’arrête.
      • Lorsque l’on souhaite effectuer une même série d’instructions tant qu’une condition donnée reste vérifiée, on utilise une boucle “while”.
      • Cette boucle “while” est utilisée lorsqu’elle correspond au cas où l’on ne peut déterminer à l’avance le nombre d’itérations nécessaires à la résolution de notre problème.
      • Le but de la boucle “while” est de répéter certaines instructions tant qu’une condition est respectée.
      • L’avantage de “while” est donc qu’il ne faut pas connaitre à l’avance le nombre de fois où on devra répéter notre boucle.




    • Syntaxe
      • while condition booléenne:
            Instruction 1 # Tant que la condition booléenne est vérifiée
         Instruction 2  # Faire les différentes instructions qui suivent
        .......
         Instruction n
  5. Exemple:
    • L’exemple ci-dessous effectue une suite de tirages de nombres aléatoires compris entre 1 et 100 grâce à la fonction rand(), avec comme condition supplémentaire que le nombre tiré soit un multiple de 7.
    • Le script affiche les nombres tirés jusqu’à trouver un multiple de 7.
    • <!DOCTYPE html >
      <html lang="fr">
      <head>
      <title>Les structures de contrôle en PHP</title>
      <meta ="UTF-8">
      </head>
      <body>
      <?php 
      $n=1;
      while($n%7!=0 )
      {
      $n = rand(1,100);
      echo $n,"&nbsp; /";
      }
       
      ?>
      </body>
      </html>
  6. La boucle do.. While

    • Définition et utilisation
      • La structure do permet d’exécuter une instruction ou un bloc d’instructions et de répéter cette action tant qu’une expression logique controlée par while est vraie.
      • Les instructions do..while sont similaires aux instructions while, si ce n’est que la condition qui est vérifiée à la fin de chaque itération, et non au début.
      • Cela signifie que la boucle s’exécute toujours au moins une fois (l’expression n’est testée qu’à la fin de l’itération), ce qui n’est pas le cas lorsque vous utilisez une boucle while (l’expression est vérifiée au début de chaque itération).
    • Syntaxe
      • 
        do
        {
        instructions
        } while (condition(s))
        

        Paramètres

        • instruction
        • Une instruction exécutée au moins une fois et ré-exécutée chaque fois que la condition de test est évaluée à true. On peut exécuter plusieurs instructions au sein d’une boucle grâce à l’instruction block ({ … }) qui permet de grouper différentes instructions en une seule.
        • condition
        • Une expression évaluée après chaque passage dans la boucle.
    • Exemple :
      • <!DOCTYPE html >
        <html lang="fr">
        <head>
        <title>Les structures de contrôle en PHP</title>
        <meta ="UTF-8">
        </head>
        <body>
        <?php 
        $i = 0;
        do {
            echo $i ." ";
            $i++;
        } while ($i < 10);
         
        ?>
        </body>
        </html>
        • Dans l’exemple suivant, les instructions de la boucle do…while continuent à s’exécuter tant que la variable i est inférieure à 10.
  7. La boucle foreach

    • Présentation
      • La boucle foreach est particulièrement efficace pour lister les tableaux associatifs dont il n’est nécessaire de connaître ni le nombre d’éléments ni les clés.
      • Le but de la boucle foreach est d’effectue une itération spécifique sur les éléments du tableau(Array).
      • Sa syntaxe est variable selon que vous souhaitez récupérer seulement les valeurs ou les valeurs et les clés (ou les indices).
    • Syntaxe
      • foreach($tableau as $valeur)
        {
        //bloc utilisant la valeur de l'élément courant
        }
      • La variable $valeur contient successivement chacune des valeurs du tableau. Il importe cependant de ne pas utiliser un nom de variable existant, faute de quoi sa valeur est écrasée.
      • Les variables utilisées dans une boucle foreach ne sont pas locales à la boucle et gardent donc la valeur du dernier élément lu dans tout le script.
      • Pour plus d’information consultez l’article parcourir les tableaux en PHP
  8. Les instructions d’arrêt et de continuité

    • PHP introduit également deux instructions particulières des boucles. Il s’agit de continue et break.
    • La première permet de forcer le passage à l’itération suivante en sautant tout ou partie du bloc d’instructions à exécuter.
    • La seconde, quant à elle, permet de forcer à quitter une structure conditionnelle telle que for(), while(), foreach() ou switch().
    • Ces deux instructions peuvent prendre un paramètre optionnel de type entier permettant de connaître le nombre de structures emboîtées qui ont été interrompues.
    • Illustrons brièvement ces deux concepts à l’aide d’exemples simples.
    • Exemple d'utilisation de continue
      <?php
        for($i=0; $i<=10; $i++) 
        {
          // On n'affiche pas les 5 premiers nombres
          if($i<=5)
          {
            continue;
          }
          // Affichage des nombres de 6 à 10
          echo $i ,'<br/>';
        }
      ?>
  9. Applications

    • App01
      • Effectuer une suite de tirages de nombres aléatoires jusqu'à obtenir une suite composée d'un nombre pair suivi de deux nombres impairs.
      • Arrêter les tirages et afficher le nombre de coups réalisés.
      • Exemple de résultat obtenu :
        • 194,285,494
          435,759,162
          237,292,768
          366,533,397
          Résultat obtenu en 4 coups
        Solution

        <?php
        $compteur=0;
        do
        {
          $x=rand(100,1000);
          $y=rand(100,1000);
          $z=rand(100,1000);
         
              if($x%2==1 OR $y%2==0 OR $z%2==0){
                  echo $x, ", ",$y, ", ",$z,"<br />";
                }else{
                    echo "<b>",$x, ", ",$y, ", ",$z,"</b><br>";
                }
         $compteur++;
        }while($x%2==1 OR $y%2==0 OR $z%2==0);
        echo "Résultat obtenu en $compteur coups";
        ?>


    • App02
      • Choisir un nombre de trois chiffres.
      • Effectuer ensuite des tirages aléatoires et compter le nombre de tirages nécessaire pour obtenir le nombre initial. Arrêter les tirages et afficher le nombre de coups réalisés.
      • Réaliser ce script d’abord avec l’instruction while puis avec l’instruction for.
      • l’instruction while
      • Solution

        <?php
        //Nombre à trouver
                 $nb=789;
                 //compteur
                 $coup=0;
                 $x=0;
                 //boucle de tirage
                 while($x!=$nb)
                 {
                    $x=rand(100,1000);
                    $coup++;
                    //echo $x,"<br />";//pour afficher tous les tirages
                 }
                 echo "<h1>$nb trouvé en $coup coups </h1>";
        ?>


      • l’instruction for
      • Solution

        <?php
          //Nombre à trouver
          $nb=789;
          $x=0;
         //boucle de tirage
         for($coup=1;$x!=$nb;$coup++)
         {
           $x=rand(100,1000);
           //echo $x,"<br />";//pour afficher tous les tirages
         }
                 echo "<h1>$nb trouvé en $coup coups </h1>";
        ?>


    • App03
      • Utiliser une boucle while pour déterminer le premier entier obtenu par tirage aléatoire qui soit un multiple d’un nombre donné.
      • Écrire la variante utilisant la boucle do…while.
      • l’instruction while
      • Solution

        <?php	 
        $nb=57;	 
        $compteur=0;	 
        $x=rand(10,1000);	 
         //Boucle while	 
        while($x%$nb!=0)	 
          {	 
         $x=rand(10,1000);	 
          $compteur++;	 
         }	 
          echo "<h1>$x est multiple de $nb: Résultat obtenu en $compteur coups</h1>";	 
         ?>


      • l’instruction do…while
      • Solution

        <?php	 
         $nb=57;	 
         $compteur=0;	 
         do	 
         {	 
         $x=rand(0,1000);	 
         $compteur++;	 
          }	 
          while($x%$nb!=0);	 
         echo "<h1>$x est multiple de $nb: Résultat obtenu en $compteur coups</h1>";	 
        ?>


    • Références:
      • https://www.php.net
      • Livre PHP7 Cours et exercices Jean Engels 2e édition
      • Technologies de l’Information et de la Communication 4 année secondaire



Riadh HAJJI

Abonnez vous à notre chaîne YouTube gratuitement