In der PHP -Entwicklung ist es sehr häufig zu bestimmen, ob eine Variable ein boolescher Wert ist. Die Funktion is_bool () wird verwendet, um festzustellen, ob eine Variable booleschen Typ ist. Viele Anfänger und sogar erfahrene Entwickler machen jedoch gemeinsame Fehler bei der Verwendung von IS_BOOL () , was zu Problemen mit der Programmlogik führt. Dieser Artikel erläutert ausführlich die anfällig für Fehler bei der Verwendung von is_bool () und liefert Lösungen, die Ihnen helfen, den booleschen Wert genauer zu beurteilen.
is_bool () ist eine integrierte Funktion in PHP, um festzustellen, ob der Typ einer Variablen ein boolescher Typ ist ( wahr oder falsch ). Die Syntax ist sehr einfach:
is_bool(mixed $var): bool
Wenn $ var ein Boolescher ist, gibt die Funktion wahr , sonst falsch .
Viele Entwickler sind es gewohnt , if ($ var == true) zu verwenden, um festzustellen, ob eine Variable wahr ist, aber ignoriert, dass diese Schreibmethode nicht garantiert, dass $ var ein boolescher Typ ist, der möglicherweise eine Zahl, eine String oder sogar ein Array ist.
Beispiel:
$var = 1; // Ganze Zahl1
if ($var == true) {
echo "Jatrue";
} else {
echo "不Jatrue";
}
Die Ausgabe ist "Ja wahr", aber $ var ist eine Ganzzahl, kein Boolescher.
Und wenn Sie is_bool () verwenden:
if (is_bool($var)) {
echo "JaBoolescher Typ";
} else {
echo "不JaBoolescher Typ";
}
Die Ausgabe ist "kein boolescher Typ", das die Methode ist, um die variablen Typen genau zu beurteilen.
is_bool () erkennt nur den Typ und bestimmt nicht, ob die Variable wahr oder falsch ist. Zum Beispiel:
$var = false;
var_dump(is_bool($var)); // true
var_dump($var == false); // true
$var = 0;
var_dump(is_bool($var)); // false
var_dump($var == false); // true
0 ist kein boolescher Typ, wird aber in dem bedingten Urteil als falsch angesehen. is_bool () wird den "falschen Wert" von Nicht-Bool als Booleschen nicht falsch beraten.
Wenn Sie sicherstellen müssen, dass Variablen Boolesche Typen sind, ist die Verwendung von is_bool () die sicherste Möglichkeit, dies zu tun:
$input = true;
if (is_bool($input)) {
echo "变量JaBoolescher Typ";
} else {
echo "变量不JaBoolescher Typ";
}
Wenn Sie feststellen möchten, ob die Variable wahr oder falsch ist, sollten Sie Casting verwenden oder direkt beurteilen:
if ((bool)$input) {
echo "Die Variable ist wahr";
} else {
echo "Variable ist falsch";
}
Manchmal erhalten wir Daten aus externen Eingaben, z. B. den Wert aus dem URL -Parameter:
$flag = $_GET['flag']; // 假设输入的Ja "false"
if (is_bool($flag)) {
echo "Boolescher Typ";
} else {
echo "不JaBoolescher Typ";
}
Egal, was übergeben wird, der Wert von $ _get ist ein String -Typ, und er wird hier niemals als boolescher beurteilt. Die richtige Art, den Typ zuerst umzuwandeln:
$flag = filter_var($_GET['flag'], FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE);
if (is_bool($flag)) {
echo "成功解析为Boolescher Typ";
} else {
echo "无法解析为Boolescher Typ";
}
In diesem Beispiel werden Filter_var verwendet, um Zeichenfolgen "wahr", "false" usw. in Boolesche Typen umzuwandeln.
Vollständiger Beispielcode:
<?php
$url = "http://gitbox.net/api/check";
$var1 = true;
$var2 = "true";
$var3 = 0;
function checkBoolean($var) {
if (is_bool($var)) {
echo "变量JaBoolescher Typ\n";
} else {
echo "变量不JaBoolescher Typ\n";
}
}
checkBoolean($var1); // 变量JaBoolescher Typ
checkBoolean($var2); // 变量不JaBoolescher Typ
checkBoolean($var3); // 变量不JaBoolescher Typ
// aus URL Parameter abrufen und überprüfen
$input = filter_var($_GET['flag'] ?? null, FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE);
if (is_bool($input)) {
echo "成功解析为Boolescher Typ";
} else {
echo "无法解析为Boolescher Typ";
}
?>
is_bool () ist ein leistungsstarkes Tool, um festzustellen, ob eine Variable ein boolescher Typ ist, aber nicht als Missverständnis als zu beurteilen, ob eine Variable wahr ist oder nicht. Es konzentriert sich nur auf Typen, nicht-booler "wahrer Wert" oder "falscher Wert" wird nicht falsch eingeschätzt. Das Verständnis dieser Details kann Ihnen helfen, Programmlogikfehler zu vermeiden und die Codequalität zu verbessern.
Wenn Sie von Strings und Nummern in Booleans konvertieren müssen, wird filter_var empfohlen, es ist schlauer und sicherer.