PHPでは、 is_null()は、変数がnullであるかどうかを確認するために一般的に使用される関数です。ただし、PHPのタイプ変換メカニズムにより、 IS_NULL()は場合によっては予期しない結果を返す可能性があり、結果として誤判断が生じる可能性があります。したがって、 is_null()を正しく使用する方法を理解し、誤ったエラーの返却を避けることが非常に重要です。
まず、 IS_NULL()の基本的な使用法を見てみましょう。パラメーターを受け入れ、変数がnullであるかどうかを示すためにtrueまたはfalseを返します。
<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>
この例では、 $ var1の値はnullであるため、 is_null($ var1)はtrueを返しますが、 $ var2の値は文字列「hello」であるため、 falseです。
is_null()は変数がnullであるかどうかを検出することを目的としていますが、場合によっては、他のタイプの値もnullに類似している可能性があり、その結果、誤判断が生じます。
PHPでは、 0と「0」の両方が「空」と見なされますが、 nullと等しくありません。 is_null()を使用してこれらの値を確認すると、それらはfalseと正しく判断されます。
<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>
空の配列[]とnullもPHPで異なります。それらは場合によっては似ていますが、 is_null()は明示的に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>
is_null()を誤用して空の配列を判断すると、誤った結果につながる可能性があります。
誤判断を避けるために、最初にis_null()の判断論理とPHPのタイプ変換ルールを理解する必要があります。誤判断を避けるためのヒントは次のとおりです。
変数が無効であるかどうかを判断する必要があり、他の「空の」値( 0 、 '0 、空の配列など)と混同される可能性があることを心配している場合、Strict Equality Sign ===を使用して、タイプと値の両方が一貫していることを確認できます。
<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>
これにより、型変換によって引き起こされる誤判断を回避できます。
False 、 0 、 " (空の文字列)、空の配列など、PHPには多くの「空の」値があります。これらの異なる状況を判断する必要がある場合は、 is_null()の代わりにempty()関数を使用できます。
<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>
empty()は、変数がnull 、 0 、空の文字列、空の配列などを含む空の値である場合にtrueを返します。
変数の状態を判断するために、より複雑なロジックが必要になる場合があります。さまざまな状況をカスタム関数を介して処理できます。たとえば、変数がnullかその他の「空の」値かを確認する場合、最初にnullを除外してから他のチェックを実行できます。
<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>
PHPでは、 IS_NULL()は非常に有用な機能ですが、その誤判断の問題には注意してください。 PHPのタイプ変換メカニズムにより、多くの「ヌル」値がnullと混同される場合があります。したがって、厳密な比較演算子===を使用して、異なる「空の」値を明確に区別するか、実際のニーズに基づいて検査ロジックをカスタマイズすることは、誤判断を避けるための効果的な方法です。合理的な判断により、コードの正確性を確保し、誤判断によって引き起こされるエラーを回避できます。