80 votes

Non égal à != et !== en PHP

J'ai toujours fait ça : if ($foo !== $bar)

Mais j'ai réalisé que if ($foo != $bar) est également correct.

Double = fonctionne toujours et a toujours fonctionné pour moi, mais chaque fois que je recherche les opérateurs PHP, je ne trouve aucune information sur le doublement de l'accès. = donc je suppose que je l'ai toujours mal fait, mais ça marche quand même. Dois-je changer tous mes !== à != juste pour le plaisir de le faire ?

148voto

BoltClock Points 249668

== et != ne tiennent pas compte du type de données des variables que vous comparez. Elles renvoient donc toutes à vrai :

'0'   == 0
false == 0
NULL  == false

=== et !== faire prennent en compte le type de données. Cela signifie que la comparaison d'une chaîne de caractères avec un booléen sera jamais être vrai parce qu'ils sont de types différents, par exemple. Ils retourneront tous false :

'0'   === 0
false === 0
NULL  === false

Vous devez comparer les types de données pour les fonctions qui renvoient des valeurs qui pourraient éventuellement avoir une valeur véridique/falsifiée ambiguë. Un exemple bien connu est strpos() :

// This returns 0 because F exists as the first character, but as my above example,
// 0 could mean false, so using == or != would return an incorrect result
var_dump(strpos('Foo', 'F') != false);  // bool(false)
var_dump(strpos('Foo', 'F') !== false); // bool(true), it exists so false isn't returned

36voto

Sandeep Points 151

!== doit correspondre à la valeur et au type de données

!= correspond juste à la valeur sans tenir compte du type de données

$num = '1';
$num2 = 1;

$num == $num2; // returns true    
$num === $num2; // returns false because $num is a string and $num2 is an integer

4voto

$a !== $b VRAI si $a n'est pas égal à $b ou ils ne sont pas du même type

Veuillez vous référer à http://php.net/manual/en/language.operators.comparison.php

0voto

Nick Craver Points 313913

Vous pouvez trouver l'information ici : http://www.php.net/manual/en/language.operators.comparison.php

C'est rare car cela n'a pas été ajouté avant PHP4. Ce que vous avez est très bien, si vous savez qu'il peut y avoir une différence de type, alors c'est une bien meilleure comparaison, puisque c'est une valeur de test. et dans la comparaison, pas seulement la valeur.

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