225 votes

est nul ou vide

J'ai une question étrange concernant PHP et NULL , veuillez consulter le code suivant:

   $a = '';
  if($a == NULL) {
      echo 'is null';
  }
 

Pourquoi je vois est nul ? Si $a est vide !, est-ce un bogue? Je vous remercie.

374voto

Godwin Points 3530

Ce que vous cherchez, c'est:

 if($variable === NULL) {...}
 

PHP considère NULL , false , 0 et la chaîne vide comme égaux.

248voto

PHPst Points 2929

Comme vous pouvez le voir dans le tableau suivant, empty($foo) est équivalent à $foo==null et is_null($foo) a la même fonction que $foo===null .

         isset  is_null ===null  ==null  empty
 null |   F   |   T   |   T   |   T   |   T   |
unset |   F   |   T   |   T   |   T   |   T   |
  ""  |   T   |   F   |   F   |   T   |   T   |
  []  |   T   |   F   |   F   |   T   |   T   |
    0 |   T   |   F   |   F   |   T   |   T   |
false |   T   |   F   |   F   |   T   |   T   |
 true |   T   |   F   |   F   |   F   |   F   |
    1 |   T   |   F   |   F   |   F   |   F   |
   \0 |   T   |   F   |   F   |   F   |   F   |
 

33voto

jancha Points 3071

vérifier == vs ===

'' == NULL renverrait vrai
0 == NULL renverrait vrai
false == null renverrait vrai

tandis que

'' === NULL renverrait faux
0 === NULL renverrait faux
false === NULL renverrait faux

20voto

Felix Kling Points 247451

Non, c'est pas un bug. Regarder le Lâche des comparaisons avec d' == tableau (deuxième tableau), ce qui montre le résultat de la comparaison de chaque valeur dans la première colonne avec les valeurs des autres colonnes:

    TRUE    FALSE   1       0       -1      "1"     "0"     "-1"    NULL    array() "php"   ""

    [...]    

""  FALSE   TRUE    FALSE   TRUE    FALSE   FALSE   FALSE   FALSE   TRUE    FALSE   FALSE   TRUE

Vous pourrez y voir qu'une chaîne vide "" comparativement false, 0, NULL ou "" du rendement de la volonté vrai.

Vous pouvez utiliser is_null [docs] au lieu de cela, ou une comparaison stricte (troisième tableau).

12voto

Aurelio De Rosa Points 11778

Ce n'est pas un bug mais le comportement normal de PHP. Cela se produit parce que l'opérateur == de PHP n'effectue pas non plus la vérification de type. Alors

 '' == null == 0 == false
 

Si vous souhaitez également vérifier si les valeurs ont le même type, utilisez plutôt === . Pour approfondir cette différence, veuillez lire la documentation officielle .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X