Equality & Identity
Fait partie de la section Fondamentaux du Journey PHP de Coddy — leçon 24 sur 71.
PHP fournit deux façons de vérifier si les valeurs sont égales : l'opérateur d'égalité (==) et l'opérateur d'identité (===). Comprendre la différence est crucial pour écrire du code fiable.
L'opérateur d'égalité (==) compare les valeurs après les avoir converties au même type. Cela s'appelle « comparaison lâche » :
<?php
var_dump(5 == "5"); // bool(true) - chaîne convertie en nombre
var_dump(0 == false); // bool(true) - les deux deviennent 0
var_dump(1 == true); // bool(true) - les deux deviennent 1
?>L'opérateur d'identité (===) compare à la fois la valeur et le type. Aucune conversion ne se produit, donc les deux doivent correspondre exactement :
<?php
var_dump(5 === "5"); // bool(false) - int vs string
var_dump(5 === 5); // bool(true) - same type and value
var_dump(0 === false); // bool(false) - int vs bool
?>Pour les comparaisons d'inégalité, utilisez != (non stricte) ou !== (stricte) :
<?php
var_dump(5 != "5"); // bool(false) - les valeurs sont égales
var_dump(5 !== "5"); // bool(true) - les types diffèrent
?>En tant que meilleure pratique, préférez === et !== pour éviter les surprises inattendues de conversion de type.
Défi
FacileLisez deux valeurs depuis l'entrée : un nombre (sous forme de chaîne) et un entier.
Utilisez les opérateurs d'égalité et d'identité pour évaluer les comparaisons suivantes et affichez le résultat de chacune en utilisant var_dump(), chacune sur une nouvelle ligne :
- Vérifiez si la valeur de chaîne est égale à l'entier en utilisant la comparaison lâche (
==) - Vérifiez si la valeur de chaîne est égale à l'entier en utilisant la comparaison stricte (
===) - Vérifiez si la valeur de chaîne n'est pas égale à l'entier en utilisant la comparaison lâche (
!=) - Vérifiez si la valeur de chaîne n'est pas égale à l'entier en utilisant la comparaison stricte (
!==)
Remarque : Gardez la première valeur comme une chaîne (ne la convertissez pas). Convertissez la seconde valeur en entier.
Exemple :
Si les entrées sont 42 et 42, la sortie devrait être :
bool(true)
bool(false)
bool(false)
bool(true)Explication :
"42" == 42est vrai (les valeurs sont égales après conversion de type)"42" === 42est faux (chaîne vs entier - types différents)"42" != 42est faux (les valeurs sont égales)"42" !== 42est vrai (les types sont différents)
Aide-mémoire
PHP a deux façons de comparer les valeurs :
Opérateur d'égalité (==) - comparaison lâche qui convertit les valeurs au même type avant de comparer :
<?php
var_dump(5 == "5"); // bool(true) - chaîne convertie en nombre
var_dump(0 == false); // bool(true) - les deux deviennent 0
var_dump(1 == true); // bool(true) - les deux deviennent 1
?>Opérateur d'identité (===) - comparaison stricte qui vérifie à la fois la valeur et le type :
<?php
var_dump(5 === "5"); // bool(false) - int vs chaîne
var_dump(5 === 5); // bool(true) - même type et valeur
var_dump(0 === false); // bool(false) - int vs booléen
?>Opérateurs non égaux :
<?php
var_dump(5 != "5"); // bool(false) - valeurs égales (lâche)
var_dump(5 !== "5"); // bool(true) - types différents (stricte)
?>Meilleure pratique : Utilisez === et !== pour éviter les conversions de type inattendues.
Essayez vous-même
<?php
// Lire l'entrée
$stringValue = trim(fgets(STDIN));
$intValue = intval(trim(fgets(STDIN)));
// TODO: Écrivez votre code ci-dessous
// Utilisez var_dump() pour imprimer le résultat de chaque comparaison sur une nouvelle ligne :
// 1. Égalité lâche (==)
// 2. Égalité stricte (===)
// 3. Inégalité lâche (!=)
// 4. Inégalité stricte (!==)
?>Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Fondamentaux
4Comparison & Logical Operators
Comparison OperatorsEquality & IdentityLogical Operators Part 1Logical Operators Part 2Recap - Simple Logic2Variables and Data Types
NumbersStrings and QuotesBooleansNaming ConventionsRecap - Variable InitEmpty VariablesString ConcatenationGetting User InputCast to Different Types5Conditional Logic
If StatementIf - ElseThe Ternary OperatorNull Coalescing OperatorSwitch StatementRecap - Making Decisions3Basic Operators
Arithmetic OperatorsModulo OperatorExponentiation OperatorCombined AssignmentIncrement/DecrementOperator PrecedenceRecap - Simple CalculationsString Operators