Programmation Web Avancée

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

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