580 votes

En quoi les opérateurs de comparaison PHP égalité (== double égal) et identité (=== triple égal) diffèrent-ils ?

Quelle est la différence entre == y === ?

  • Comment exactement la vague == la comparaison fonctionne-t-elle ?
  • Comment exactement le strict === la comparaison fonctionne-t-elle ?

Quels seraient des exemples utiles ?

1voto

ofaurax Points 428

Les variables ont un type et une valeur.

  • $var = "test" est une chaîne qui contient "test".
  • $var2 = 24 est un entier dont la valeur est 24.

Lorsque vous utilisez ces variables (en PHP), il arrive que vous n'ayez pas le bon type. Par exemple, si vous faites

if ($var == 1) {... do something ...}

PHP doit convertir ("to cast") $var en entier. Dans ce cas, "$var == 1" est vrai car toute chaîne non vide est convertie en 1.

Lorsque vous utilisez ===, vous vérifiez que la valeur ET LE TYPE sont égaux, donc "$var === 1" est faux.

Ceci est utile, par exemple, lorsque vous avez une fonction qui peut retourner false (en cas d'erreur) et 0 (résultat) :

if(myFunction() == false) { ... error on myFunction ... }

Ce code est erroné car si myFunction() retourne 0, il est casté en false et vous semblez avoir une erreur. Le code correct est :

if(myFunction() === false) { ... error on myFunction ... }

parce que le test est que la valeur de retour "est un booléen et est fausse" et non pas "peut être casté en faux".

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X