Menu
Coddy logo textTech

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.

challenge icon

Défi

Facile

Lisez 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 :

  1. Vérifiez si la valeur de chaîne est égale à l'entier en utilisant la comparaison lâche (==)
  2. Vérifiez si la valeur de chaîne est égale à l'entier en utilisant la comparaison stricte (===)
  3. Vérifiez si la valeur de chaîne n'est pas égale à l'entier en utilisant la comparaison lâche (!=)
  4. 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" == 42 est vrai (les valeurs sont égales après conversion de type)
  • "42" === 42 est faux (chaîne vs entier - types différents)
  • "42" != 42 est faux (les valeurs sont égales)
  • "42" !== 42 est 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 (!==)

?>
quiz iconTestez-vous

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