Dans PHP, IS_NULL () est une fonction couramment utilisée pour vérifier si une variable est nul . Cependant, en raison du mécanisme de conversion de type dans PHP, IS_NULL () peut renvoyer des résultats inattendus dans certains cas, entraînant une erreur de jugement. Par conséquent, il est très important de comprendre comment utiliser IS_NULL () correctement et d'éviter de retourner de fausses erreurs.
Tout d'abord, jetons un coup d'œil à l'utilisation de base d' Is_Null () . Il accepte un paramètre et renvoie True ou False pour indiquer si la variable est nul .
<span><span><span class="hljs-variable">$var1</span></span><span> = </span><span><span class="hljs-literal">null</span></span><span>;
</span><span><span class="hljs-variable">$var2</span></span><span> = </span><span><span class="hljs-string">"Hello"</span></span><span>;
</span><span><span class="hljs-title function_ invoke__">var_dump</span></span><span>(</span><span><span class="hljs-title function_ invoke__">is_null</span></span><span>(</span><span><span class="hljs-variable">$var1</span></span><span>)); </span><span><span class="hljs-comment">// bool(true)</span></span><span>
</span><span><span class="hljs-title function_ invoke__">var_dump</span></span><span>(</span><span><span class="hljs-title function_ invoke__">is_null</span></span><span>(</span><span><span class="hljs-variable">$var2</span></span><span>)); </span><span><span class="hljs-comment">// bool(false)</span></span><span>
</span></span>
Dans cet exemple, la valeur de $ var1 est nul , donc is_null ($ var1) renvoie vrai , tandis que la valeur de $ var2 est la chaîne "bonjour" , donc fausse .
Bien que IS_NULL () soit destiné à détecter si une variable est nul , dans certains cas, d'autres types de valeurs peuvent également être similaires à Null , entraînant une erreur de jugement.
En PHP, 0 et «0» sont considérés comme «vides», mais ils ne sont pas égaux à NULL . Lorsque vous utilisez is_null () pour vérifier ces valeurs, elles sont correctement jugées fausses .
<span><span><span class="hljs-variable">$var1</span></span><span> = </span><span><span class="hljs-number">0</span></span><span>;
</span><span><span class="hljs-variable">$var2</span></span><span> = </span><span><span class="hljs-string">'0'</span></span><span>;
</span><span><span class="hljs-variable">$var3</span></span><span> = </span><span><span class="hljs-literal">null</span></span><span>;
</span><span><span class="hljs-title function_ invoke__">var_dump</span></span><span>(</span><span><span class="hljs-title function_ invoke__">is_null</span></span><span>(</span><span><span class="hljs-variable">$var1</span></span><span>)); </span><span><span class="hljs-comment">// bool(false)</span></span><span>
</span><span><span class="hljs-title function_ invoke__">var_dump</span></span><span>(</span><span><span class="hljs-title function_ invoke__">is_null</span></span><span>(</span><span><span class="hljs-variable">$var2</span></span><span>)); </span><span><span class="hljs-comment">// bool(false)</span></span><span>
</span><span><span class="hljs-title function_ invoke__">var_dump</span></span><span>(</span><span><span class="hljs-title function_ invoke__">is_null</span></span><span>(</span><span><span class="hljs-variable">$var3</span></span><span>)); </span><span><span class="hljs-comment">// bool(true)</span></span><span>
</span></span>
Les tableaux vides [] et NULL sont également différents en PHP. Bien qu'ils se ressemblent dans certains cas, Is_Null () renvoie explicitement False .
<span><span><span class="hljs-variable">$var1</span></span><span> = [];
</span><span><span class="hljs-variable">$var2</span></span><span> = </span><span><span class="hljs-literal">null</span></span><span>;
</span><span><span class="hljs-title function_ invoke__">var_dump</span></span><span>(</span><span><span class="hljs-title function_ invoke__">is_null</span></span><span>(</span><span><span class="hljs-variable">$var1</span></span><span>)); </span><span><span class="hljs-comment">// bool(false)</span></span><span>
</span><span><span class="hljs-title function_ invoke__">var_dump</span></span><span>(</span><span><span class="hljs-title function_ invoke__">is_null</span></span><span>(</span><span><span class="hljs-variable">$var2</span></span><span>)); </span><span><span class="hljs-comment">// bool(true)</span></span><span>
</span></span>
Si vous abusez IS_NULL () pour juger un tableau vide, cela peut conduire à de mauvais résultats.
Afin d'éviter les erreurs de jugement, nous devons d'abord comprendre la logique de jugement d' Is_null () et les règles de conversion de type de PHP. Voici quelques conseils pour éviter une erreur de jugement:
Si vous devez déterminer si une variable est nul et craignent qu'elle ne soit confondue avec d'autres valeurs "vides" (telles que 0 , '0' , des tableaux vides, etc.), vous pouvez utiliser le signe d'égalité strict === pour vous assurer que le type et la valeur sont cohérents.
<span><span><span class="hljs-variable">$var1</span></span><span> = </span><span><span class="hljs-number">0</span></span><span>;
</span><span><span class="hljs-variable">$var2</span></span><span> = </span><span><span class="hljs-string">'0'</span></span><span>;
</span><span><span class="hljs-variable">$var3</span></span><span> = </span><span><span class="hljs-literal">null</span></span><span>;
</span><span><span class="hljs-title function_ invoke__">var_dump</span></span><span>(</span><span><span class="hljs-variable">$var1</span></span><span> === </span><span><span class="hljs-literal">null</span></span><span>); </span><span><span class="hljs-comment">// bool(false)</span></span><span>
</span><span><span class="hljs-title function_ invoke__">var_dump</span></span><span>(</span><span><span class="hljs-variable">$var2</span></span><span> === </span><span><span class="hljs-literal">null</span></span><span>); </span><span><span class="hljs-comment">// bool(false)</span></span><span>
</span><span><span class="hljs-title function_ invoke__">var_dump</span></span><span>(</span><span><span class="hljs-variable">$var3</span></span><span> === </span><span><span class="hljs-literal">null</span></span><span>); </span><span><span class="hljs-comment">// bool(true)</span></span><span>
</span></span>
Cela peut éviter les erreurs de jugement causées par la conversion de type.
Il existe de nombreuses valeurs "vides" en php, telles que false , 0 , "" (chaîne vide), des tableaux vides, etc. Si vous avez besoin de juger ces différentes situations, vous pouvez utiliser la fonction vide () au lieu de is_null () .
<span><span><span class="hljs-variable">$var1</span></span><span> = </span><span><span class="hljs-string">''</span></span><span>;
</span><span><span class="hljs-variable">$var2</span></span><span> = </span><span><span class="hljs-literal">null</span></span><span>;
</span><span><span class="hljs-variable">$var3</span></span><span> = [];
</span><span><span class="hljs-title function_ invoke__">var_dump</span></span><span>(</span><span><span class="hljs-keyword">empty</span></span><span>(</span><span><span class="hljs-variable">$var1</span></span><span>)); </span><span><span class="hljs-comment">// bool(true)</span></span><span>
</span><span><span class="hljs-title function_ invoke__">var_dump</span></span><span>(</span><span><span class="hljs-keyword">empty</span></span><span>(</span><span><span class="hljs-variable">$var2</span></span><span>)); </span><span><span class="hljs-comment">// bool(true)</span></span><span>
</span><span><span class="hljs-title function_ invoke__">var_dump</span></span><span>(</span><span><span class="hljs-keyword">empty</span></span><span>(</span><span><span class="hljs-variable">$var3</span></span><span>)); </span><span><span class="hljs-comment">// bool(true)</span></span><span>
</span></span>
vide () reviendra true si la variable est une valeur vide, y compris null , 0 , chaîne vide, tableau vide, etc.
Parfois, vous avez peut-être besoin d'une logique plus complexe pour juger l'état d'une variable. Diverses situations peuvent être gérées via des fonctions personnalisées. Par exemple, lorsque vous vérifiez si une variable est nul ou d'autres valeurs "vides", vous pouvez exclure d'abord NULL , puis effectuer d'autres vérifications.
<span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">isActuallyNull</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$var</span></span></span><span>) {
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable">$var</span></span><span> === </span><span><span class="hljs-literal">null</span></span><span>;
}
</span><span><span class="hljs-title function_ invoke__">var_dump</span></span><span>(</span><span><span class="hljs-title function_ invoke__">isActuallyNull</span></span><span>(</span><span><span class="hljs-literal">null</span></span><span>)); </span><span><span class="hljs-comment">// bool(true)</span></span><span>
</span><span><span class="hljs-title function_ invoke__">var_dump</span></span><span>(</span><span><span class="hljs-title function_ invoke__">isActuallyNull</span></span><span>(</span><span><span class="hljs-number">0</span></span><span>)); </span><span><span class="hljs-comment">// bool(false)</span></span><span>
</span><span><span class="hljs-title function_ invoke__">var_dump</span></span><span>(</span><span><span class="hljs-title function_ invoke__">isActuallyNull</span></span><span>(</span><span><span class="hljs-string">''</span></span><span>)); </span><span><span class="hljs-comment">// bool(false)</span></span><span>
</span></span>
Dans PHP, IS_NULL () est une fonction très utile, mais faites attention à ses problèmes de mauvaise évaluation. En raison du mécanisme de conversion de type PHP, de nombreuses valeurs "nulles" peuvent être confondues avec NULL . Par conséquent, l'utilisation de l'opérateur de comparaison stricte === pour distinguer clairement différentes valeurs "vides", ou personnaliser la logique d'inspection en fonction des besoins réels est un moyen efficace d'éviter une erreur de jugement. Grâce à un jugement raisonnable, vous pouvez garantir l'exactitude du code et éviter les erreurs causées par une erreur de jugement.