J'ai toujours fait cela if($foo!==$bar)
mais je me suis rendu compte que if($foo!=$bar)
est également correct. Double =
fonctionne toujours et a toujours fonctionné pour moi, mais chaque fois que je recherche PHP opérateurs, je ne trouve aucune information sur double =
donc je suppose que j'ai toujours mal agi, mais cela fonctionne quand même. Alors devrais-je changer tous mes !==
à !=
juste pour le plaisir?
==
Et !=
Ne prennent pas en compte le type de données des variables que vous comparez. Donc, tout cela reviendrait vrai:
'0' == 0
false == 0
NULL == false
===
Et !==
do prennent en compte le type de données. Cela signifie que comparer une chaîne à un booléen jamais sera vrai car ils sont de types différents, par exemple. Ceux-ci vont tous retourner faux:
'0' === 0
false === 0
NULL === false
Vous devez comparer les types de données pour les fonctions qui renvoient des valeurs pouvant avoir une valeur de vérité/falsification 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
! == doit correspondre à la valeur et au type de données
! = correspond simplement à la valeur en ignorant le 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
$a !== $b
[~ # ~] vrai [~ # ~] si $a
n'est pas égal à $b
, ou ils ne sont pas du même type
Prière de se référer à http://php.net/manual/en/language.operators.comparison.php
Vous pouvez trouver l'info ici: http://www.php.net/manual/en/language.operators.comparison.php
C'est rare parce que cela n'a pas été ajouté avant PHP4. Ce que vous avez est bien, cependant, si vous savez qu'il peut y avoir une différence de type, alors la comparaison est bien meilleure, car elle teste la valeur et le type dans la comparaison. , pas seulement la valeur.