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