En PHP, quelle est la différence entre is_null
et ==null
en PHP? Quelles sont les qualifications pour que les deux retournent vrai?
is_null
est le même que === null
. Les deux renvoient true lorsqu'une variable est null
(ou non définie).
Notez que j'utilise ===
et pas ==
. ===
compare le type ainsi que la valeur.
Vous pouvez donc mieux le comprendre:
$a = null;
$b = 0;
is_null($a) // TRUE
$a == null // TRUE
$a === null // TRUE
is_null($b) // FALSE
$b == null // TRUE
$b === null // FALSE
Il y a quelques très bons graphiques sur le site php.net qui montrent comment différentes valeurs réagissent:
===null
est recommandé par Rasmus Lerdorf, l'inventeur de PHP. Rasmus dit que le test de null est plus rapide que le test de isset
. Sa recommandation est une raison suffisante pour examiner sérieusement la différence. La différence serait importante si vous aviez une petite boucle parcourant le même code des milliers de fois dans la demande d'une page Web.
UPD: Un test de vitesse pour is_null et une comparaison stricte:
PHP 5.5.9
is_null - float(2.2381200790405)
=== - float(1.0024659633636)
PHP 7.0.0-dev
is_null - float(1.4121870994568)
=== - float(1.4577329158783)
Vous pouvez vérifier la comparaison entre is_null () et null === $ var
==
ne vérifie pas le type, donc quelque part, quelque chose comme la chaîne ''
ou la chaîne 'null'
peut être égal à null.
Utilisez le signe triple égal, ===
, pour vérifier non seulement que deux valeurs sont égales mais aussi qu'elles sont du même type.