Les conditions if, if…else et if…elseif…else PHP

Télécharger le PDF du cours


Livret PDF du cours PHP et MySQL
Nous savons désormais utiliser les opérateurs de comparaison. Il est donc temps d’entrer dans le vif du sujet et d’apprendre à créer nos premières structures conditionnelles.

Dans cette nouvelle leçon, nous allons étudier les structures de contrôle conditionnelles if, if…else et if… elseif… else.

 

La condition if en PHP

La structure de contrôle conditionnelle, ou plus simplement « condition » if est l’une des plus importantes et des plus utilisées dans l’ensemble des langages de programmation utilisant les structures de contrôle et en particulier en PHP.

La condition if est également la plus simple, puisqu’elle va nous permettre d’exécuter un bloc de code si et seulement si le résultat d’un test vaut true.

Créons immédiatement nos premières conditions if :

<!DOCTYPE html>
<html>
    <head>
        <title>Cours PHP & MySQL</title>
        <meta charset="utf-8">
        <link rel="stylesheet" href="cours.css">
    </head>
    
    <body>
        <h1>Titre principal</h1>
        <?php
            $x = 4; //On affecte la valeur 4 à $x
            $y = 2; //On affecte la valeur 2 à $y
            
            if($x > 1){
                echo '$x contient une valeur supérieure à 1';
            }
            
            if($x == $y){
                echo '$x et $y contiennent la même valeur';
            }
        ?>
        <p>Un paragraphe</p>
    </body>
</html>

 

Exemple d'utilisation d'une condition if en PHP

Ici, j’ai créé deux conditions if avec une comparaison qui va être évaluée à true et une autre qui va être évaluée à false.

Commencez par noter la syntaxe de nos conditions qui est la suivante : if(test){code à exécuter si le test est validé}. Il convient de différencier ici « test » et « comparaison » : le test correspond à l’ensemble du code écrit dans les parenthèses et peut être composé de plusieurs comparaisons comme on va le voir par la suite.

Dans notre première condition, le résultat de la comparaison renvoyé par le PHP est true puisque notre variable $x stocke le chiffre 4 qui est bien supérieur à 1. Le code dans la condition est alors exécuté.

Dans notre deuxième condition, la comparaison est cette fois-ci évaluée à false car la valeur contenue dans $x n’est pas égale en valeur à la valeur contenue dans $y. Le code contenu dans la condition ne sera donc pas lu ni exécuté.

 

Inverser la valeur logique d’une condition

Dans les exemples ci-dessus, le code placé dans notre condition n’est exécuté que si le résultat de la comparaison est true.

Dans certaines situations, nous préférerons créer nos conditions de telle sorte à ce que le code dans la condition soit exécuté si le résultat de la comparaison est false.

Nous allons pouvoir faire cela de deux manières : soit en utilisant l’opérateur logique inverse ! que nous étudierons dans la leçon suivante, soit en comparant le résultat de notre comparaison à false.

Concentrons-nous pour le moment sur cette deuxième méthode qui demande de bien connaitre l’ordre de priorité des opérateurs et de bien comprendre l’associativité de ceux-ci.

Il y a deux choses à savoir ici :

  • Les opérateurs <, <=, > et >= ont une priorité plus importante que les opérateurs ==, ===, !=, !==, <> et <> qui ont eux-mêmes une priorité plus importante que l’opérateur ??;
  • Les opérateurs de comparaison sont non-associatifs (à l’exception de l’opérateur ?? dans l’associativité se fait par la droite), ce qui signifie que si ils ont une priorité équivalente on ne pourra pas les utiliser entre eux. Cela signifie qu’on n’aura pas le droit d’écrire la comparaison 2 < 4 > 2 par exemple en PHP car les opérateurs < et > ont le même ordre de priorité et sont non associatifs.

Ainsi, si on écrit par exemple 2 < 4 == false, PHP va d’abord effectuer la comparaison 2 < 4 puis comparer le résultat de cette comparaison (qui est ici true car 2 est bien inférieur à 4) à false. Ici, true est différent de false et donc le test va finalement échouer.

Pour inverser la valeur logique d’une condition, c’est-à-dire pour exécuter le code de la condition uniquement lorsque notre première comparaison est évaluée à false, il suffit donc de comparer le résultat de cette première comparaison à la valeur false.

Si notre première comparaison n’est pas vérifiée et est évaluée à false, alors le test de notre condition va devenir if(false == false) ce qui va être finalement évalué à true et donc le code de notre condition va bien être exécuté !

Notez qu’on va également pouvoir utiliser les parenthèses pour forcer la priorité d’un opérateur sur un autre, ce qui peut être utile lorsqu’on souhaite utiliser plusieurs opérateurs de comparaison qui ont une priorité équivalente par défaut.

<!DOCTYPE html>
<html>
    <head>
        <title>Cours PHP & MySQL</title>
        <meta charset="utf-8">
        <link rel="stylesheet" href="cours.css">
    </head>
    
    <body>
        <h1>Titre principal</h1>
        <?php
            $x = 4; //On affecte la valeur 4 à $x
            $y = 2; //On affecte la valeur 2 à $y
            
            if(($x <= 1) == false){
                echo '$x contient une valeur supérieure à 1';
            }
            
            if(($x != $y) == false){
                echo '$x et $y contiennent la même valeur';
            }
        ?>
        <p>Un paragraphe</p>
    </body>
</html>

 

Résultat de l'utilisation d'une condition if en PHP dans le cas où le test est évalué à false

Ici, notre variable $x stocke la valeur 4 qui est supérieure à 1. La partie $x <= 1 de notre première condition va donc être évaluée à false. On compare ensuite le résultat de la comparaison à false. On obtient donc ici if(false == false) qui va être évalué à true puisque c’est le cas et donc le code dans notre condition va bien être exécuté.

On utilise le même procédé pour notre deuxième condition que je vous laisse décortiquer seul pour que vous puissiez vous entrainer.

 

La condition if…else en PHP

Avec la condition if, nous restons relativement limités puisque cette condition nous permet seulement d’exécuter un bloc de code selon que le résultat d’un test soit évalué à true.

La structure conditionnelle if…else (« si… sinon » en français) va être plus complète que la condition if puisqu’elle va nous permettre d’exécuter un premier bloc de code si un test renvoie true ou un autre bloc de code dans le cas contraire.

<!DOCTYPE html>
<html>
    <head>
        <title>Cours PHP & MySQL</title>
        <meta charset="utf-8">
        <link rel="stylesheet" href="cours.css">
    </head>
    
    <body>
        <h1>Titre principal</h1>
        <?php
            $x = 4; //On affecte la valeur 4 à $x
            $y = 2; //On affecte la valeur 2 à $y
            
            if($x > 1){
                echo '$x contient une valeur stric. supérieure à 1 <br>';
            }else{
                echo '$x contient une valeur inférieure ou égale à 1 <br>';
            }
            
            if($x == $y){
                echo '$x et $y contiennent la même valeur <br>';
            }else{
                echo '$x et $y contiennent des valeurs différentes <br>';
            }
        ?>
        <p>Un paragraphe</p>
    </body>
</html>

 

Exemple d'utilisation d'une condition if else en PHP et résultat

Notez la syntaxe de la condition if…else : on place notre comparaison et on effectue notre test dans le if mais pas dans le else.

En effet, la structure else est une structure qui a été créée pour prendre en charge tous les cas nos gérés précédemment. Ainsi, on ne précisera jamais de condition au sein d’un else puisque par défaut cette structure prend en charge tous les autres cas (tous les cas non gérés par le if ici).

Si le test de notre condition est validé, le code dans le if va s’exécuter et le code dans le else va alors être ignoré.

Si au contraire le test n’est pas validé alors le code dans le if va être ignoré et c’est le cas dans le else qui va être exécuté.

 

La condition if…elseif…else en PHP

La condition if…elseif…else (« si…sinon si…sinon ») est une structure conditionnelle encore plus complète que la condition if…else puisqu’elle va nous permettre cette fois-ci de générer autant de cas que l’on souhaite.

En effet, nous allons pouvoir écrire autant de elseif (en un seul mot, attention) que l’on veut dans notre condition if…elseif…else, chacun avec un test différent.

<!DOCTYPE html>
<html>
    <head>
        <title>Cours PHP & MySQL</title>
        <meta charset="utf-8">
        <link rel="stylesheet" href="cours.css">
    </head>
    
    <body>
        <h1>Titre principal</h1>
        <?php
            $x = 4; //On affecte la valeur 4 à $x
            $y = 2; //On affecte la valeur 2 à $y
            
            if($x > 1){
                echo '$x contient une valeur stric. supérieure à 1 <br>';
            }elseif($x == 1){
                echo '$x contient la valeur 1 <br>';
            }else{
                echo '$x contient une valeur stric. inférieure à 1 <br>';
            }
            
            if($x == $y){
                echo '$x et $y contiennent la même valeur <br>';
            }elseif($x < $y){
                echo '$x contient une valeur stric. inférieure à $y <br>';
            }elseif($x > $y){
                echo '$x contient une valeur stric. supérieure à $y <br>';
            }else{
                echo 'Les valeurs de $x et $y n\'ont pas pu être comparées';
            }
        ?>
        <p>Un paragraphe</p>
    </body>
</html>

 

Exemple d'utilisation d'une condition if elseif else en PHP et résultat

Comme vous pouvez le constater, les elseif occupent un rôle similaire au if de départ puisque chacun d’entre eux va posséder son propre test (qui est obligatoire).

Notez que dans le cas où plusieurs elseif possèdent un test qui va être évalué à true, seul le code du premier elseif rencontré sera exécuté. En effet, dès qu’un test va être validé, le PHP va ignorer les tests suivants.

Notez également qu’on devra toujours obligatoirement terminer notre condition if…elseif…else avec un else qui servira à gérer toutes les issues (ou les cas) non pris en charge par le if ou par les elseif.

Laisser un commentaire