Je me demande, pourquoi 'value' == value
renvoie TRUE
en PHP?Pourquoi 'value' == value retourne TRUE en PHP?
var_dump("value" == value);
sortie est: bool(true)
Je me demande, pourquoi 'value' == value
renvoie TRUE
en PHP?Pourquoi 'value' == value retourne TRUE en PHP?
var_dump("value" == value);
sortie est: bool(true)
Vous devez utiliser ===
pour vérifier le type et truthiness
==
contrôle simplement truthiness et "value"
est tout aussi vrai que true
dans ce contexte
Dans votre exemple si vous avez fait et non définir value
dans votre portée - PHP va lancer un avertissement et utiliser "value"
au lieu de value
parce que c'est ce qu'il pense que vous vouliez utiliser.
Votre explication est fausse: 'var_dump (" value "== val); // bool (false) ' – KingCrunch
Conseils PHP de Stephen Colbert. Semble légitime. – Sammitch
@KingCrunch ha! Je n'ai pas remarqué ça! – Neal
Vous devez augmenter le niveau error_reporting
dans votre système de développement au moins E_NOTICE
(mieux: E_ALL | E_STRICT
, ou depuis 5.4 E_ALL
est assez 8AS il couvre maintenant E_STRICT
)). Dans ce cas, il vous dirait que la constante value
n'existe pas et suppose que "value"
est une chaîne. C'est une fonctionnalité héritée de PHP3 jours.
PHP évaluera les constantes non définies comme s'il s'agissait de chaînes. Normalement, il lance un avis. En tenant compte de cela, cette expression est vraie. Même avec une comparaison stricte, ce sera toujours vrai. var_dump(error === "error"); // true
@Lucas (et Jack Maney) Cela ne fait aucune différence ici ... – KingCrunch
devrait également afficher un avertissement lorsque 'value' n'est pas cité. – NappingRabbit
duplicata possible de [Comment les opérateurs de comparaison d'égalité (== double égal) et d'identité (=== triple égal) sont différents?] (Http://stackoverflow.com/questions/80646/how-do-the-equality- double-equals-et-identity-triple-equals-comparis) –