In PHP sind IS_BOOL und GETTYPE zwei häufig verwendete Funktionen, die den Typ einer Variablen überprüfen. Obwohl sie alle verwendet werden können, um die Typüberprüfung zu bewältigen, gibt es signifikante Unterschiede in ihrem Verhalten und Zweck, insbesondere bei der Beurteilung von Booleschen Werten. In diesem Artikel wird der Unterschied zwischen IS_BOOL und GETTYPE eingehend untersucht und erklären, warum Sie sich nicht nur auf Gettyp verlassen können, um den booleschen Wert zu beurteilen.
IS_BOOL ist eine Funktion, die speziell verwendet wird, um festzustellen, ob eine Variable ein boolescher Wert ist. Es gibt zwei mögliche Werte für boolesche Werte: True und False . Der Rückgabewert dieser Funktion ist ein boolescher Wert und wahr , wenn der Typ der Variablen ein boolescher Wert ist, ansonsten falsch .
<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">// Ausgabe: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">// Ausgabe:NULL (false)</span></span><span>
</span></span>
In diesem Beispiel gibt IS_BOOL ($ var1) true zurück, da der Wert von $ var1 ein boolescher True ist. und IS_BOOL ($ var2) gibt falsch zurück, auch wenn der Wert von $ var2 1 beträgt, ist es immer noch kein boolescher Wert.
Gettype ist eine Funktion, die den Typ einer Variablen erhalten kann. Es gibt eine Zeichenfolge zurück, die den Typ der Variablen darstellt. Im Gegensatz zu IS_BOOL gibt Gettype String -Beschreibungen aller Typen zurück, nicht nur Boolesche Typen.
<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">// Ausgabe: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">// Ausgabe:integer</span></span><span>
</span></span>
Im obigen Beispiel gibt Gettype ($ var1) boolean zurück, was darauf hinweist, dass die Variable $ var1 ein Boolescher ist. GetType ($ var2) gibt Ganzzahl zurück und gibt an, dass die Variable $ var2 eine Ganzzahl ist.
Obwohl diese beiden Funktionen verwendet werden, um die Art der Variablen zu überprüfen, haben sie einige wichtige Unterschiede, wenn sie tatsächlich verwendet werden:
Widmung : IS_BOOL wird nur verwendet, um festzustellen, ob eine Variable ein Boolescher ist, und Gettype ist eine allgemeine Funktionserkennungsfunktion, die alle PHP -Typen wie Boolean , Ganzzahl , String usw. zurückgeben kann.
Rückgabewert : IS_BOOL gibt einen booleschen Wert true oder falsch zurück, während Gettype einen Zeichenfolge zurückgibt, der den Typ der Variablen beschreibt.
Typ -Matching : IS_BOOL kehrt nur dann zurück , wenn die Variable streng boolean wahr oder falsch ist, während Gettype eine boolean -ähnliche Zeichenfolge zurückgibt, ohne zwischen wahr und falsch zu unterscheiden.
GetType gibt die Typ -Namenszeichenfolge der Variablen (z. B. boolean ) zurück, anstatt den booleschen Wert true oder falsch zurückzugeben. Wenn Sie Gettype verwenden, um einen Booleschen zu beurteilen, klassifiziert es sowohl wahr als auch falsche als Booleane und kann sie nicht unterscheiden. Dies bedeutet, dass Sie nicht beurteilen können, ob ein boolescher Wert von Gettyp wahr oder falsch ist, und Sie können nur beurteilen, ob die Variable Boolesche Typ ist.
<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">// Ausgabe: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">// Ausgabe: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">// Ausgabe:integer</span></span><span>
</span></span>
Obwohl $ var1 und $ var2 beide boolesche Werte sind, gibt Gettype einfach boolean zurück und kann nicht unterscheiden, ob sie wahr oder falsch sind. Wenn Sie zwischen True und Falsch klar unterscheiden möchten, müssen Sie eine spezifischere Art des Urteils verwenden.
Um genau zu bestimmen, ob eine Variable ein boolescher Wert ist, besteht der beste Weg darin, IS_BOOL zu verwenden. Wenn Sie den spezifischen Inhalt des Booleschen Wertes überprüfen müssen (d. H. Bestimmen Sie, ob er wahr oder falsch ist), können Sie die Variablen direkt vergleichen.
<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 Es ist ein boolescher Wert\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 Ja 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 Ja false\n"</span></span><span>;
}
</span></span>
Verwenden Sie in diesem Beispiel zunächst IS_BOOL , um festzustellen, ob die Variable ein boolescher Wert ist. Verwenden Sie dann den strengen Vergleichsoperator ===, um festzustellen, ob er wahr oder falsch ist.
IS_BOOL und GETTYPE sind beide nützliche Werkzeuge, sind jedoch für verschiedene Szenarien geeignet. IS_BOOL wird speziell verwendet, um festzustellen, ob eine Variable ein boolescher Wert ist, und Gettype wird verwendet, um allgemeinere Typinformationen zu erhalten. Bei der Beurteilung von Booleschen Werten ist es ungenau, Gettype direkt zu verwenden, da es die Werte nicht wahr und falsch verteilen kann. Wenn es notwendig ist, den Booleschen Typ zu beurteilen, wird empfohlen, IS_BOOL zu verwenden und ihn mit einem direkten Vergleich zu kombinieren, um den spezifischen Wert zu bestimmen.