php pas égal à!= et!==

J'ai toujours fait ce if($foo!==$bar), mais j'ai réalisé que if($foo!=$bar) est correct aussi. Double = fonctionne toujours et a toujours fonctionné pour moi, mais chaque fois que je recherche des opérateurs PHP, Je ne trouve aucune information sur double = donc je suppose que j'ai toujours fait ce mal mais cela fonctionne de toute façon. Alors devrais-je changer tous mes !== en != juste pour le plaisir de cela?

47
demandé sur totymedli 2010-09-04 14:16:47

4 réponses

== et != ne pas prendre en compte le type de données des variables que vous comparez. Donc, ceux-ci retourneraient tous true:

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

=== et !== do prendre en compte le type de données. Cela signifie que comparer une chaîne à un booléen ne sera jamais vrai car ils sont de types différents par exemple. Ceux-ci 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 être ambiguës, vraies/fausses. 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
105
répondu BoltClock 2010-09-04 10:21:24

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

!= juste correspondre à 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
23
répondu Sandeep 2010-09-04 10:20:23

$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

2
répondu 2010-09-04 10:21:08

Vous pouvez trouver les informations ici: http://www.php.net/manual/en/language.operators.comparison.php

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

0
répondu Nick Craver 2010-09-04 10:19:03