boolval()
Alles über die PHP-Funktion boolval(): Syntax, Wahrheitswerte, Vergleich mit dem (bool)-Cast und häufige Fallstricke.
Einführung
Die Funktion boolval() in PHP ist eine Typkonvertierungsfunktion, die jeden Wert in sein boolesches Äquivalent umwandelt — entweder true oder false. Sie wurde in PHP 5.5 eingeführt und folgt denselben Regeln, die PHP überall dort anwendet, wo ein Wert als Bedingung interpretiert wird (z. B. innerhalb einer if-Anweisung). Sie ist daher eine klare, explizite Möglichkeit zu fragen: „Ist dieser Wert truthy?".
boolval() tut genau dasselbe wie der (bool)-Cast. Der Grund für ihre Existenz ist, dass eine Funktion — im Gegensatz zu einem Cast — als Callback übergeben werden kann, z. B. an array_map(), was ein Sprachkonstrukt wie (bool) nicht kann.
Diese Seite behandelt die Syntax, wie jeder Typ konvertiert wird, wie boolval() mit dem (bool)-Cast verglichen werden kann und die häufigen Fallstricke (wie der string "0").
Grundlegende Syntax
Die grundlegende Syntax der Funktion boolval() lautet wie folgt:
Grundlegende Syntax der PHP-Funktion boolval()
boolval(mixed $value): boolDer Parameter $value ist der zu konvertierende Wert. Die Funktion gibt immer einen boolean zurück: true für jeden truthy-Wert und false für jeden falsy-Wert. Sie hat keine Nebeneffekte und wirft nie eine Ausnahme.
Welche Werte sind falsy?
PHP behandelt nur eine festgelegte Menge von Werten als false. Alles andere ist true. Diese kurze Liste auswendig zu kennen ist der Schlüssel zur korrekten Verwendung von boolval():
falseselbst- die Ganzzahl
0und der Gleitkommawert0.0(und-0.0) - der leere string
""und der string"0" - das leere array
[] null- eine nicht gesetzte / undefinierte Variable
Der string "0" ist der klassische Fallstrick: Er ist nicht leer, dennoch betrachtet PHP ihn als falsy. Beachten Sie, dass "0.0", " " (ein Leerzeichen) und "false" allesamt truthy strings sind.
Verwendungsbeispiel
Hier ist ein Beispiel, wie die Funktion boolval() in PHP verwendet werden kann:
Verwendungsbeispiel von PHP boolval()
Hier konvertiert boolval() $var1 (eine von null verschiedene Ganzzahl) zu true und $var2 (null) zu false. Wir umschließen das Ergebnis mit var_export(), damit der boolean als literaler Text true / false ausgegeben wird — ein einfaches echo würde für true den Wert 1 ausgeben und für false gar nichts, was die Ergebnisse schwer lesbar macht.
boolval() vs. der (bool)-Cast
Für die Konvertierung eines einzelnen Werts sind boolval($x) und (bool) $x austauschbar und liefern identische Ergebnisse:
<?php
$value = "0";
var_export(boolval($value)); // false
echo "\n";
var_export((bool) $value); // falseWann sollte man also boolval() statt (bool) verwenden? Immer dann, wenn die Konvertierung als Callable übergeben werden muss. Ein Cast ist ein Sprachkonstrukt, keine Funktion, und kann daher nicht an Higher-Order-Funktionen wie array_map() oder array_filter() übergeben werden. boolval kann das:
Ein array auf seine truthy-Werte filtern
Jedes Element wird in einen boolean konvertiert. 1, "hello" und [1] werden zu true; der Rest — einschließlich des trügerischen "0" — wird zu false.
Häufiger Fallstrick: der string "0"
Da boolval() die Wahrheitswertregeln von PHP widerspiegelt, wird der string "0" zu false ausgewertet. Dies führt in Code, der Benutzereingaben validiert, zu Problemen, da Formularfelder immer als strings ankommen:
<?php
$input = "0"; // e.g. $_POST['quantity']
if (boolval($input)) {
echo "treated as true\n";
} else {
echo "treated as false\n"; // this branch runs
}Wenn Sie tatsächlich wissen möchten, ob „dieser string nicht leer ist", anstatt ob „er truthy ist", vergleichen Sie explizit mit "" per striktem Vergleich ($input !== ""), anstatt sich auf boolval() zu verlassen.
Best Practices für die Verwendung von boolval()
Um die Funktion boolval() in PHP effizient zu nutzen, sollten einige Best Practices beachtet werden:
Strikte Vergleiche verwenden
Bei der Verwendung der Funktion boolval() ist es wichtig, strikte Vergleiche (===) statt lockerer Vergleiche (==) zu verwenden. Lockere Vergleiche können zu unerwartetem Verhalten führen.
Geeignete Variablentypen verwenden
Bei der Verwendung der Funktion boolval() ist es wichtig sicherzustellen, dass die zu konvertierende Variable vom geeigneten Typ ist. Weitere Details dazu, wie verschiedene Datentypen in booleans konvertiert werden, finden Sie im PHP-Handbuch zur Typumwandlung.
Typkonvertierungsreferenz
Das Verständnis, wie verschiedene PHP-Typen in booleans konvertiert werden, hilft dabei, unerwartete Ergebnisse zu vermeiden:
| Typ | Konvertiert zu true wenn | Konvertiert zu false wenn |
|---|---|---|
string | Nicht leerer string | Leerer string "" |
int / float | Wert ungleich null | 0 oder 0.0 |
array | Nicht leeres array | Leeres array [] |
null | Nie | Immer |
Verwandte Funktionen
boolval() gehört zur Familie der Typkonvertierungs-Hilfsfunktionen in PHP. Greifen Sie auf diejenige zurück, die dem benötigten Typ entspricht:
intval()— einen Wert in eine Ganzzahl konvertieren.floatval()— einen Wert in einen Gleitkommawert konvertieren.strval()— einen Wert in einen string konvertieren.settype()— den Typ einer Variable direkt ändern.gettype()/is_bool()— den aktuellen Typ einer Variable prüfen.
Einen umfassenderen Überblick darüber, wie Werte zwischen Typen wechseln, finden Sie unter PHP-Datentypen.
Fazit
boolval() konvertiert jeden Wert in einen boolean nach den standardmäßigen Wahrheitsregeln von PHP und gibt false nur für die kurze, festgelegte Liste von falsy-Werten zurück (false, 0, 0.0, "", "0", [], null und nicht gesetzte Variablen) und true für alles andere. Es verhält sich genau wie der (bool)-Cast, mit dem zusätzlichen Vorteil, dass es als Callback in Funktionen wie array_map() verwendet werden kann. Behalten Sie den "0"-Fallstrick beim Validieren von string-Eingaben im Hinterkopf und bevorzugen Sie strikte Vergleiche, wenn Sie präzise Kontrolle benötigen.