structure conditionnelle

I. Introduction

 

II. L’instruction if

 

A. La structure du if

B. La structure du if….else

C. La structure du if ... elseif ... else

III. L’instruction switch

 

IV. Les boucles

 

A. Boucle while

B. Boucle do while

C. Boucle for

 

V. Foreach

I. Introduction

On appelle structure conditonnelle les instructions qui permettent de tester si une condition est vraie ou non, c'est-à-dire si la valeur de son expression vaut 0 ou 1 (le PHP associe le mot clé true à 1 et false à 0). Ces structures conditionnelles peuvent être associées à des structures qui se répètent suivant la réalisation de la condition, on appelle ces structures des structures de boucle

if Si != Différent de
else Autrement < Plus petit que
elseif Autrement Si > Plus grand que
switch selon <= Plus petit ou égal
while Chaque fois que (boucle) >= Plus grand ou égal
for Tant que (boucle) and ou && Et
== Strictement égal à or ou || Ou


II. L'instruction if

L'instruction if est la structure de test la plus basique, on la retrouve dans tous les langages (avec une syntaxe différente...). Elle permet d'exécuter une série d'instruction si jamais une condition est réalisée.

A. La structure du if 

(expr conditionnelle) ? (valeur si vrai)

if (condition réalisée)    
    {
    liste d'instructions
    }

    Ce script exécute un bloc si le système d'exploitation est Linux

<?
if (PHP_OS == "WINNT")
   {
    Print "Nous sommes sous Windows <br>";
    Print "Version : ". `ver`;
   }
?>

Remarques:

<?
if (PHP_OS == "WINNT") print "Nous sommes sous Windows";
?>
if ((condition1)&&(condition2)) teste si les deux conditions sont vraies
if ((condition1)||(condition2)) exécutera les instructions si l'une ou l'autre des deux conditions est vraie
s'il n'y a qu'une instruction, les accolades ne sont pas nécessaires...

L'instruction if dans sa forme basique ne permet de tester qu'une condition, or la plupart du temps on aimerait pouvoir choisir les instructions à exécuter en cas de non réalisation de la condition...


B. La structure du if..else

(expr conditionnelle) ? (valeur si vrai) : (valeur si faux)

L'expression if ... else permet d'exécuter une autre série d'instruction en cas de non-réalisation de la condition

if (condition réalisée)
   {
   liste d'instructions
   }
else
   {
   autre liste d'instructions
   }

    Ce script exécute un autre bloc si le système d'exploitation n'est pas Windows (même résultat que l'exercice précédemment.

<?
if (PHP_OS == "WINNT")
   {
   print "Nous sommes sous Windows <br>";
   >print "Version : ". `ver`;
   }
else
   {
   print "Nous sommes sous Linux <br>";
   print "Version : ". `uname -r`."<br>";
   print "Machine : ". `uname -m`;
   }
?>

L'instruction if ... else ne permet de tester qu'une condition, or il est parfois nécessaire de tester plusieurs conditions de façon exclusive, c'est-à-dire que sur toutes les conditions une seule sera réalisée ...


C. La structure du if ... elseif ... else

L'expression if ... elseif ... else permet d'enchaîner une série d'instructions et évite d'avoir à imbriquer des instructions if.

(expr conditionnelle) ? (valeur si vrai) sinon (autre expr conditionnelle ?)  (valeur si vrai)  (valeur si faux)

La syntaxe de cette expression est la suivante:

if (condition réalisée)
  {
  liste d'instructions
  }
elseif (autre condition réalisée)
  {
  autre liste d'instructions
   }
else
  {
   (dernière condition réalisée) série d'instructions
  }

    Ce script exécute un autre Condition si le système d'exploitation n'est pas Windows (même résultat que l'exercice précédemment.

<?
if (PHP_OS == "WINNT")
   {
   print "Nous sommes sous Windows <br>";
   print "Version : ". `ver`;
   }
elseif (PHP_OS == "Linux")
   {
   print "Nous sommes sous Linux <br>";
   print "Version : ". `uname -r`."<br>";
   print "Machine : ". `uname -m`;
   }
?>

La {  } dans elseif ne sont pas indispensables

  Nous définissons une variable à la valeur ' 512 ' puis nous allons tester si celle-ci est comprise entre 0 et 499 puis entre 500 et 999 et enfin supérieure à 999,

  <?
$toto = 512;
if($toto>=0 && $toto<500)    {
    echo $toto.' est compris entre 0 et 499';    }
elseif($toto>=500 && $toto<1000)     {
    echo $toto.' est compris entre 500 et 999';    }
else     {
    echo $toto.' est plus grand que 999';    }
?>

III. L'instruction switch

C'est une alternative à la commande if, la commande switch sera préférée à la commande if dans le cas où l'on aurait une seule expression à comparer à d'autres. L'expression à l'intérieur de l'instruction est évaluée en premier, puis comparée à chaque cas introduit par la commande case. Il est possible d'ajouter l'instruction default qui est l'équivalent du else de l'instruction if.

La structure:

switch (Variable)
{
case Valeur1:
Liste d'instructions_1
break;
case Valeur2:
Liste d'instructions_2
break;
case Valeurs n.:
Liste d'instructions_n
break;
default:
Liste d'instructions
break;
}
<?
$medor = 'chien';

switch($medor)
    {
    case 'girafe':
        echo 'Medor est un girafe !';        break;
    case 'elephant':
        echo 'Medor est un éléphant';        break;
    case 'souris':
        echo 'Medor est une souris';         break;
    case 'chien':
        echo 'Medor est un chien';         break;
    case 'chat':
        echo 'Medor est un chat';         break;
    default:
        echo 'Peut être un hippopotame ? Qui sait ...';    }
?>

IV. Les boucles

Les boucles permettent d'exécuter un code plusieurs fois sous condition. On exécute les lignes de code à l'intérieur d'une boucle et on en sort si la condition est remplie.

Trois formes de boucles sont utilisables: while, do while et for.

A noter :
L'instruction break permet de sortir d'une boucle.
L'instruction exit permet d'arrêter le code (PHP et HTML) en cours d'exécution. Après cette instruction plus rien ne sera envoyé au navigateur, cela est très utile lorsque que par exemple une requête SQL n'est pas exécutée. En effet il ne sert à rien de continuer un affichage qui sera de toute façon vide. Ou encore pour quitter un script proprement après un message d'erreur.


A.  Boucle while

C'est la boucle la plus simple à utiliser. L'expression à l'intérieur de l'instruction est évaluée en premier, si elle est vraie le code à l'intérieur de la boucle est exécuté sinon le code est ignoré. Cette instruction est utile lorsque l'on ne sait pas combien de fois le code doit être exécuté.

La structure :

while (condition réalisée)
 {
 liste d'instructions
 }

  Nous allons donner la valeur 6, puis à l'aide de la boucle nous allons nous mettre dans le cas où nous ne connaissons pas la valeur de $toto et allons la rechercher

  <?
$toto = 6;
$i = 0; 
while($i != $toto)
    {
    print 'Toto est différent de '.$i.'<br>';    $i++;
    }
print 'Toto est égal à '.$i;
?>

Par convention la variable $i fait toujours office de compteur dans une boucle elle a toujours la valeur "0" au début, vous notez que cette valeur prend +1 à la fin de la boucle ($i++) et chaque fois que la condition a été respectée (en l'occurrence que $i est différent de $toto) on retourne à WHILE et l'on fait un nouveau test, etc.

Ce qui donne en français :

  1. $i = 0 , on teste si 0 est différent de toto = Oui, on affiche le message puis on ajoute 1 à $i ($i++) et on retourne à while.
  2. $i = 1 , on teste si 1 est différent de toto = Oui, on affiche le message puis on ajoute 1 à $i ($i++) et on retourne à while.
  3. $i = 2 , on teste si 2 est différent de toto = Oui, on affiche le message puis on ajoute 1 à $i ($i++) et on retourne à while.
  4. etc... 
  5. $i = 6 , on teste si 6 est différent de toto = Non, on sort de la boucle (accolades), et on poursuit le code. En l'occurrence on affiche le message (Toto est égal à 6).

B.  Boucle do while

C'est une variante de l'instruction while, elle permet d'exécuter un code avant de rentrer dans la boucle, pour par exemple retarder ou décider de rentrer dans la boucle.

La structure:

DO
{
instruction éventuelle;
}
WHILE (condition réalisée)
{
  liste d'instruction;
}

C.  Boucle for

La boucle for est utilisée en général pour les boucles qui doivent être exécutées un certain nombre de fois.

La structure:

for (compteur; condition; modification  compteur)
   {
   liste d'instructions
   } 

Au lieu de déclarer le compteur avant le début de la boucle ($i=0;) et à chaque fin de tour d'incrementer le compteur ($i++), on le fait directement dans la déclaration de la boucle. Voici le même code que précédemment avec une boucle for :

for ($i=1; $i<6; $i++)   {   print "$i <br>";   }
  <?
$toto = 6;
for($i=0; $i != $toto ; $i++)
    {
    echo 'Toto est différent de '.$i.'<br>'; }
print 'Toto est égal à '.$i;
?>

V. Foreach

PHP 4 (mais pas PHP 3) inclut une commande foreach.. C'est un moyen simple de passer en revue un tableau.

Il y a deux syntaxes possibles : la seconde est une extension mineure mais pratique de la première:

La structure:

foreach(array_expression as $value) commandes
foreach(array_expression as $key => $value) commandes

La première forme passe en revue le tableau array_expression. A chaque itération, la valeur de l'élément courant est assignée à $value et le pointeur interne de tableau est avancé d'un élément (ce qui fait qu'à la prochaine itération, on accédera à l'élément suivant).

La deuxième forme fait exactement la même chose, mais c'est la clé de l'élément courant qui est assigné à la variable $key.

   Parcours de tableau

<?
$tab = array (1, 2, 3, 17);
foreach ($tab as $v)
   {
   print "Valeur courante de \$tab: $v <br>";
   }
?>

   Parcours de tableau associatif

<?
$tab = array (
    "un" => 1,
    "deux" => 2,
    "trois" => 3,
    "dix-sept" => 17);
foreach($tab as $k => $v) {
   print "\$tab[$k] => $v <br>";
}
?>

 tableaux multi-dimensionnels

<?
$tab[0][0] = "HAREL";
$tab[0][1] = "Yvon";
$tab [1][0] = "yvon.lui@free.fr";
$tab [1][1] = "0494544322";
foreach($tab as $v1)
    {
    foreach ($v1 as $v2)
        {
        print "$v2 <br>";
       }
    }
?>

 tableaux dynamiques

<?
foreach(array(1, 2, 3, 4) as $v)
   {
   print "$v <br>";
   }
?>