PHPでは、 is_boolとgetTypeは、変数のタイプをチェックする2つの一般的に使用される関数です。それらはすべてタイプチェックを処理するために使用できますが、特にブール値を判断する場合、行動と目的には大きな違いがあります。この記事では、 IS_BoolとgetTypeの違いを詳細に調べ、 getTypeだけに頼ることができない理由を説明します。
IS_BOOLは、変数がブール値であるかどうかを判断するために特別に使用される関数です。ブール値には、真とfalseの2つの値があります。この関数の返品値はブール値であり、変数のタイプがブール値であり、それ以外の場合は偽りの場合は真です。
<span><span><span class="hljs-variable">$var1</span></span><span> = </span><span><span class="hljs-literal">true</span></span><span>;
</span><span><span class="hljs-variable">$var2</span></span><span> = </span><span><span class="hljs-number">1</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">is_bool</span></span><span>(</span><span><span class="hljs-variable">$var1</span></span><span>); </span><span><span class="hljs-comment">// 出力:1 (true)</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">is_bool</span></span><span>(</span><span><span class="hljs-variable">$var2</span></span><span>); </span><span><span class="hljs-comment">// 出力:ヌル (false)</span></span><span>
</span></span>
この例では、 IS_BOOL($ VAR1)は、 $ var1の値がブールの真であるため、 trueを返します。 is_bool($ var2)はfalseを返します。たとえ$ var2の値が1であっても、ブール値ではありません。
getTypeは、変数のタイプを取得できる関数です。変数のタイプを表す文字列を返します。 IS_BOOLとは異なり、 getTypeは、ブール型だけでなく、すべてのタイプの文字列の説明を返します。
<span><span><span class="hljs-variable">$var1</span></span><span> = </span><span><span class="hljs-literal">true</span></span><span>;
</span><span><span class="hljs-variable">$var2</span></span><span> = </span><span><span class="hljs-number">1</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">gettype</span></span><span>(</span><span><span class="hljs-variable">$var1</span></span><span>); </span><span><span class="hljs-comment">// 出力:boolean</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">gettype</span></span><span>(</span><span><span class="hljs-variable">$var2</span></span><span>); </span><span><span class="hljs-comment">// 出力:integer</span></span><span>
</span></span>
上記の例では、 getType($ var1)がブール値を返し、変数$ var1がブール値であることを示します。 getType($ var2)は整数を返し、変数$ var2が整数であることを示します。
これらの2つの関数は、変数のタイプを確認するために使用されているようですが、実際に使用すると、いくつかの重要な違いがあります。
献身: IS_BOOLは、変数がブール値であるかどうかを判断するためにのみ使用され、 getTypeはブール、整数、文字列などを含むすべてのPHPタイプを返すことができる一般型検出機能です。
戻り値: is_boolはブール値をtrueまたはfalseで返しますが、 getTypeは変数のタイプを説明する文字列を返します。
タイプマッチング: IS_BOOLは、変数が厳密にブールの真またはFALSEである場合にのみTRUEを返しますが、 GetTypeはTrueとFalseを区別することなくブール式文字列を返します。
getTypeは、ブール値を直接返すのではなく、変数のタイプ名文字列(ブール値など)を返します。 getTypeを使用してブール値を判断すると、真と偽の両方をブール値として分類し、それらを区別することはできません。これは、 getTypeによってブール値が真であるか偽りであるかを判断できないことを意味し、変数がブール型であるかどうかを判断することができます。
<span><span><span class="hljs-variable">$var1</span></span><span> = </span><span><span class="hljs-literal">true</span></span><span>;
</span><span><span class="hljs-variable">$var2</span></span><span> = </span><span><span class="hljs-literal">false</span></span><span>;
</span><span><span class="hljs-variable">$var3</span></span><span> = </span><span><span class="hljs-number">1</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">gettype</span></span><span>(</span><span><span class="hljs-variable">$var1</span></span><span>); </span><span><span class="hljs-comment">// 出力:boolean</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">gettype</span></span><span>(</span><span><span class="hljs-variable">$var2</span></span><span>); </span><span><span class="hljs-comment">// 出力:boolean</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">gettype</span></span><span>(</span><span><span class="hljs-variable">$var3</span></span><span>); </span><span><span class="hljs-comment">// 出力:integer</span></span><span>
</span></span>
$ var1と$ var2はどちらもブール値ですが、 getTypeは単にブール値を返すだけで、それらが真かfalsであるかどうかを区別することはできません。 TrueとFalseを明確に区別したい場合は、より具体的な判断方法を使用する必要があります。
変数がブール値であるかどうかを正確に判断するために、最良の方法はis_boolを使用することです。ブール値の特定のコンテンツを確認する必要がある場合(つまり、それが真か偽かを決定するかどうかを決定します)、変数を直接比較できます。
<span><span><span class="hljs-variable">$var1</span></span><span> = </span><span><span class="hljs-literal">true</span></span><span>;
</span><span><span class="hljs-variable">$var2</span></span><span> = </span><span><span class="hljs-literal">false</span></span><span>;
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">is_bool</span></span><span>(</span><span><span class="hljs-variable">$var1</span></span><span>)) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"var1 それはブール値です\n"</span></span><span>;
}
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$var1</span></span><span> === </span><span><span class="hljs-literal">true</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"var1 はい true\n"</span></span><span>;
}
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$var2</span></span><span> === </span><span><span class="hljs-literal">false</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"var2 はい false\n"</span></span><span>;
}
</span></span>
この例では、最初にis_boolを使用して、変数がブール値であるかどうかを判断します。次に、厳密な比較演算子===を使用して、それが真か偽かを判断します。
is_boolとgetTypeはどちらも便利なツールですが、さまざまなシナリオに適しています。 IS_Boolは、変数がブール値であるかどうかを判断するために特異的に使用され、 GetTypeはより一般的なタイプ情報を取得するために使用されます。ブール値を判断する場合、値をtrueとfalseを配布できないため、 getTypeを直接使用することは不正確です。したがって、ブールタイプを判断する必要がある場合は、 iS_boolを使用して直接比較して特定の値を決定することをお勧めします。