web-dev-qa-db-fra.com

PHP is_null () et == null

En PHP, quelle est la différence entre is_null et ==null en PHP? Quelles sont les qualifications pour que les deux retournent vrai?

46
kel_ff0080

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.

64
Rocket Hazmat

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
58
Daniel Ribeiro

Il y a quelques très bons graphiques sur le site php.net qui montrent comment différentes valeurs réagissent:

Comparaison de types - php.net

13
keithhatfield

===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)
5
Akim Kelar

Vous pouvez vérifier la comparaison entre is_null () et null === $ var

Bonne comparaison entre deux

5
Umut KIRGÖZ

== 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.

3
DanRedux