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é (===).
Voilà qui est clair, net et précis! Un grand merci.
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 ;-)
Mille fois Merci!!!! cette histoire me casse le cerveau depuis plus d'une heure
Oh merci !!! très clair
Je ne quoi dire juste un grand merci !!! ? je suis fier du résultat
(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.
@Daniel,
Merci, mais je crois que le mieux serait de demander sur des sites comme StackOverflow pour ce genre de questions!