現在の位置: ホーム> 最新記事一覧> is_nullを使用するときに誤判断を避ける方法は?誤ったエラーが返されないようにするためのヒント

is_nullを使用するときに誤判断を避ける方法は?誤ったエラーが返されないようにするためのヒント

gitbox 2025-08-07

PHPでは、 is_null()は、変数がnullであるかどうかを確認するために一般的に使用される関数です。ただし、PHPのタイプ変換メカニズムにより、 IS_NULL()は場合によっては予期しない結果を返す可能性があり、結果として誤判断が生じる可能性があります。したがって、 is_null()を正しく使用する方法を理解し、誤ったエラーの返却を避けることが非常に重要です。

1。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です。

2。型変換の問題によって引き起こされる誤判断

is_null()は変数がnullであるかどうかを検出することを目的としていますが、場合によっては、他のタイプの値もnullに類似している可能性があり、その結果、誤判断が生じます。

2.1 0「0」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>

2.2空の配列とnullの違い

空の配列[]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()を誤用して空の配列を判断すると、誤った結果につながる可能性があります。

3.誤判断を避ける方法は?

誤判断を避けるために、最初にis_null()の判断論理とPHPのタイプ変換ルールを理解する必要があります。誤判断を避けるためのヒントは次のとおりです。

3.1 Strict Equality Sign ===を使用します

変数が無効であるかどうかを判断する必要があり、他の「空の」値( 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>

これにより、型変換によって引き起こされる誤判断を回避できます。

3.2は、異なる「空の」値を明確に区別します

False0" (空の文字列)、空の配列など、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()は、変数がnull0 、空の文字列、空の配列などを含む空の値である場合にtrueを返します。

3.3カスタム検査ロジック

変数の状態を判断するために、より複雑なロジックが必要になる場合があります。さまざまな状況をカスタム関数を介して処理できます。たとえば、変数が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>

4。概要

PHPでは、 IS_NULL()は非常に有用な機能ですが、その誤判断の問題には注意してください。 PHPのタイプ変換メカニズムにより、多くの「ヌル」値がnullと混同される場合があります。したがって、厳密な比較演算子===を使用して、異なる「空の」値を明確に区別するか、実際のニーズに基づいて検査ロジックをカスタマイズすることは、誤判断を避けるための効果的な方法です。合理的な判断により、コードの正確性を確保し、誤判断によって引き起こされるエラーを回避できます。