Web 3

Blogue

Les cours

La différence entre la double et la triple égalité


Rédigé par , le
En PHP, une méthode fréquemment utilisée pour comparer les chaînes de caractères est en utilisant la fonction strcmp(). Pourtant, il est commun de voir une comparaison en utilisant une double égalité (==). Mauvaise idée.

La double égalité
Le problème avec "==" est qu'elle ne considère que la valeur et non le type lors d'une comparaison.

Par exemple, le code suivant est problématique :
<?php
    $value = 0;

    if ($value == "supprimer") {
        echo "Suppression d'un élément";
    }
?>

Lors de l'exécution de ce code, PHP devra "caster" la chaîne de caractères en INT afin de la comparer avec $value. Comme la chaîne ne commence pas avec un nombre, alors le résultat du "cast" est 0. Donc, la comparaison sera évaluée comme suit :
<?php
    if (0 == 0) {
        echo "Suppression d'un élément";
    }
?>

Le résultat de cette comparaison est évidemment true. Let's go, supprimons l'élément!

Voici deux exemples de "cast" en PHP.
<?php
    echo (int)"123Lorem"; // Résultat : 123
    echo (int)"Lorem"; // Résultat : 0;
?>

La triple égalité
En utilisant "===" lors d'une comparaison, la valeur et le type sont considérés.
<?php
    $value = 0;

    if ($value === "0") {
        echo "Identique";
    }
    else {
        echo "Différent";
    }
?>

Cette comparaison retournera "Différent", puisque même si les valeurs sont identiques, les types des éléments sont différents. C'est mieux, non ?

Pour éviter les problèmes lors d'une comparaison en PHP, je vous conseille fortement de prendre habitude d'utiliser strcmp(), ou encore la triple égalité (===).
Les commentaires sur cet article
Par : Acasanva
2011-09-07 04:52:33

Voilà qui est clair, net et précis! Un grand merci.

Par : Amine
2014-02-18 06:30:25

Merci pour cette explication, ca me dérangeais que Netbeans me demande de changer le == en === dans mes if() sans aucune explication, en plus... les == ne m'ont pas causé de problèmes !

Bonne contituation ;-)

Par : Fabrice
2014-08-20 11:01:58

Mille fois Merci!!!! cette histoire me casse le cerveau depuis plus d'une heure

Par : Rachit
2016-06-05 14:02:09

Oh merci !!! très clair

Par : Amira
2016-09-26 01:02:09

Je ne quoi dire juste un grand merci !!! ? je suis fier du résultat

Par : Daniel GAUQUELIN
2021-02-21 10:06:59

(d’abord merci pour cette bonne explication sur le triple égal!) .
Mais à chaque fois que je vois ce cadre avec -envoyer- dessous ça me met dans tous mes états. Pourrais-je avoir un exemple simple et efficace (même avec une classe) pour envoyer un commentaire en php ? En fait c'est juste pour envoyer un rappel de leur pass par mail a mes habitués. Pour le moment je fais system(mailit ...) pour pouvoir m'authentifier quand j’envoie un mail. je suis sous wamp et netbeanset j'utilise le php.

Par : Frédéric Thériault
2021-02-21 20:43:27

@Daniel,

Merci, mais je crois que le mieux serait de demander sur des sites comme StackOverflow pour ce genre de questions!

Ajouter votre commentaire
(facultatif)
(facultatif et non divulgé)
Captcha image
Prenez le nombre affiché et faites moins 1.
 
Blog  

Les articles


Pour envoyer une demande d'assistance à l'enseignant, cliquez ici