Présentation des conditions et des opérateurs de comparaison

Dans cette nouvelle partie, nous allons étudier et comprendre l’intérêt des structures de contrôle en PHP. Une structure de contrôle est un ensemble d’instructions qui permet de contrôler l’exécution du code.

Il existe différents types de structures de contrôle. Les deux types les plus connus et les plus utilisés sont les structures de contrôle conditionnelles qui permettent d’exécuter un bloc de code si une certaine condition est vérifiée et les structures de contrôle de boucle qui permettent d’exécuter un bloc de code en boucle tant qu’une condition est vérifiée.

Nous allons déjà commencer avec l’étude des structures de contrôle conditionnelles.

 

Présentation des conditions en PHP

Les structures de contrôle conditionnelles (ou plus simplement conditions) vont nous permettre d’exécuter différents blocs de code selon qu’une condition spécifique soit vérifiée ou pas.

Par exemple, on va pouvoir utiliser les conditions pour afficher un message de bienvenue différent en PHP sur notre site selon que l’utilisateur soit connu ou un simple visiteur qui ne s’est jamais inscrit sur notre site.

Nous allons très souvent utiliser les conditions avec des variables : selon la valeur stockée dans une variable, nous allons vouloir exécuter un bloc de code plutôt qu’un autre.

Les conditions vont ainsi être un passage incontournable pour rentre un site dynamique puisqu’elles vont nous permettre d’exécuter différents codes et ainsi afficher différents résultats selon le contexte.

En PHP, nous allons pouvoir utiliser les conditions suivantes :

  • La condition if (si) ;
  • La condition if… else (si… sinon) ;
  • La condition if… elseif… else (si… sinon si… sinon).

Nous allons étudier chacune de ces conditions dans la suite de cette partie.

 

Présentation des opérateurs de comparaison

Comme je l’ai précisé plus haut, nous allons souvent construire nos conditions autour de variables : selon la valeur d’une variable, nous allons exécuter tel bloc de code ou pas.

En pratique, nous allons donc comparer la valeur d’une variable à une certaine autre valeur donnée et selon le résultat de la comparaison exécuter un bloc de code ou pas. Pour comparer des valeurs, nous allons devoir utiliser des opérateurs de comparaison.

Voici ci-dessous les différents opérateurs de comparaison disponibles en PHP ainsi que leur signification :

OpérateurDéfinition
==Permet de tester l’égalité sur les valeurs
===Permet de tester l’égalité en termes de valeurs et de types
!=Permet de tester la différence en valeurs
<>Permet également de tester la différence en valeurs
!==Permet de tester la différence en valeurs ou en types
<Permet de tester si une valeur est strictement inférieure à une autre
>Permet de tester si une valeur est strictement supérieure à une autre
<=Permet de tester si une valeur est inférieure ou égale à une autre
>=Permet de tester si une valeur est supérieure ou égale à une autre

Certain de ces opérateurs nécessitent certainement une précision de ma part. Avant tout, vous devez bien comprendre que lorsqu’on utilise un opérateur de comparaison en PHP, on n’indique pas au PHP que telle valeur est supérieure, inférieure, égale ou différente de telle autre.

Au contraire, les opérateurs de comparaisons nous servent à demander au PHP de comparer deux opérandes (les « opérandes » sont les valeurs situées de chaque côté d’un opérateur), c’est-à-dire d’évaluer si telle valeur est bien supérieure, inférieure, égale ou différente (selon l’opérateur utilisé) à telle autre valeur. Le PHP va ensuite renvoyer une valeur selon le résultat de la comparaison.

Revenons à nos opérateurs. Tout d’abord, notez que notre « égal » mathématique (l’égalité en termes de valeurs) se traduit en PHP par le double signe égal ==.

Ensuite, certains d’entre vous doivent certainement se demander ce que signifie le triple égal. Lorsqu’on utilise un triple égal ===, on cherche à effectuer une comparaison non seulement sur la valeur mais également sur le type des deux opérandes.

Prenons un exemple simple pour illustrer cela. Imaginons que l’on possède une variable $x dans laquelle on stocke le chiffre 4. On veut ensuite comparer la valeur stockée dans notre variable à la chaîne de caractères « 4 ».

Si on utilise le double signe égal pour effectuer la comparaison, l’égalité va être validée par le PHP car celui-ci ne va tester que les valeurs, et 4 est bien égal à « 4 » en termes de valeurs.

En revanche, si on utilise le triple signe égal, alors l’égalité ne va pas être validée car nous comparons un nombre à une chaine de caractères (donc des types différents de valeurs).

On va suivre exactement le même raisonnement pour les deux opérateurs != et !== qui vont nous permettre de tester respectivement la différence en termes de valeurs simplement et la différence en termes de valeurs ou de type.

 

Utiliser les opérateurs de comparaison

Il y a différentes choses que vous devez savoir et comprendre pour bien utiliser les opérateurs de comparaison.

La première chose à savoir est que lorsqu’on utilise un opérateur de comparaison, le PHP va comparer la valeur à gauche de l’opérateur à celle à droite. On dit également qu’il évalue la comparaison.

Si la comparaison est vérifiée ou validée, alors le PHP renvoie la valeur booléenne true. Si le test de comparaison échoue, alors PHP renvoie la valeur booléenne false. Cela est très important à comprendre car nos conditions vont s’appuyer sur cette valeur booléenne pour décider du code à exécuter ou pas.

<!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
            
            /*On compare la valeur contenue dans $x à 4 en valeur.
             *On renvoie le résultat de la comparaison grâce à var_dump()*/
            var_dump($x == 4);
            echo '<br>';
            
            var_dump($x > 7);
            echo '<br>';
            
            /*On compare la valeur de $x à la chaine de caractères "4" en
             *valeur simplement*/
            var_dump($x == "4");
            echo '<br>';
            
            /*On compare la valeur de $x à la chaine de caractères "4" en
             *termes de valeur et de type*/
            var_dump($x === "4");
            echo '<br>';
            
            var_dump($x != "4");
            echo '<br>';
            
            var_dump($x !== "4");
            echo '<br>';
        ?>
        <p>Un paragraphe</p>
    </body>
</html>

 

Exemple d'utilisation des opérateurs de comparaison en PHP et résultats renvoyés

Expliquons les résultats obtenus. Tout d’abord, vous remarquez qu’on a utilisé la fonction var_dump() pour afficher les résultats plutôt qu’un echo.

Cela a été fait pour une raison simple : echo va transformer toute valeur en chaîne de caractères avant de l’afficher. Or, l’équivalent de la valeur booléenne true en chaîne de caractères est la chaine de caractères « 1 » tandis que false devient « 0 » ou une chaine de caractères vide.

Comme je voulais absolument vous montrer que le PHP renvoyait bien une valeur booléenne après l’utilisation d’opérateurs de comparaison, j’ai donc été obligé d’utiliser la fonction var_dump() à la place de echo.

Le rôle de la fonction PHP var_dump() est en effet d’afficher les informations structurées d’une variable ou d’une expression et notamment son type et sa valeur. C’est pour cela que le navigateur nous affiche des bool(true) ou bool(false).

Ceci étant dit, analysons maintenant chacune de nos opérations en détail et expliquons les résultats en soi.

Pour commencer, on compare la valeur contenue dans $x au chiffre 4. Si le PHP considère l’égalité vérifiée, il renvoie le booléen true. Dans le cas contraire, il renverra code>false. Comme vous pouvez le voir, c’est la valeur true qui est renvoyée. En effet, la valeur de notre variable est bien égale en valeur au chiffre 4.

On compare ensuite la valeur contenue dans $x au chiffre 7 avec l’opérateur de supériorité absolue. Si le PHP détermine que la valeur contenue dans $x est strictement supérieure au chiffre 7, il renvoie true. Dans le cas contraire, il renvoie code>false. Dans le cas présent, $x contient le chiffre 4, qui n’est pas strictement supérieur au chiffre 7. C’est donc la valeur code>false qui est renvoyée.

Pour notre troisième comparaison, on décide de comparer la valeur de $x à la chaine de caractères « 4 ». On utilise le double signe égal pour cela, on ne va donc comparer que les valeurs. Comme la valeur 4 est bien égale en valeur à la chaine de caractères « 4 », PHP renvoie true.

Ensuite, on compare à nouveau la valeur contenue dans notre variable $x à la chaine de caractères « 4 ». Cependant, cette fois-ci, on utilise le triple signe égal.
En faisant cela, on signifie que l’on veut comparer les valeurs mais également les types de chacune des deux valeurs. Comme un nombre et une chaine de caractères n’ont pas le même type, PHP renvoie cette fois-ci false.

Dans notre cinquième opération, on demande à PHP de déterminer si la valeur contenue dans $x différente (en valeur) de la chaine de caractères « 4 ». Comme le chiffre 4 n’est pas différent en valeur de la chaine de caractères « 4 », le PHP renvoie false (car rappelez-vous qu’on teste ici la différence).

Enfin, on demande à PHP de déterminer si la valeur contenue dans $x est différente en valeur ou en type de la chaine de caractères « 4 ». Le chiffre 4 est bien d’un type différent de la chaine de caractères « 4 », et donc le PHP renvoie true.

 

Les opérateurs de comparaison ternaire, spaceship et fusion null

La dernière version majeure du PHP, le PHP 7 a introduit deux nouveaux opérateurs de comparaison qui se comportent différemment des précédents puisque le PHP ne va pas renvoyer true ou false à l’issue de la comparaison.

Le premier de ces opérateurs est l’opérateur « spaceship » <=>. A l’issue de la comparaison des deux opérandes, le PHP va ici renvoyer :

  • 0 dans le cas où les deux opérandes sont égaux ;
  • -1 si l’opérande à gauche de l’opérateur est plus petit que celui de droite ;
  • 1 si l’opérande à gauche de l’opérateur est plus grand que celui de droite.

Le deuxième opérateur est l’opérateur « fusion null » ??. Cet opérateur va principalement nous permettre de comparer le contenu de deux variables. Le PHP va ici renvoyer :

  • La valeur de l’opérande à droite de l’opérateur si la valeur de l’opérande à gauche est NULL ;
  • La valeur de l’opérande à gauche de l’opérateur dans tous les autres cas.

Le dernier opérateur est l’opérateur ternaire ? :. Nous allons étudier en détail ces trois opérateurs dans une prochaine leçon.

Laisser un commentaire