W3docs

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): bool

Der 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():

  • false selbst
  • die Ganzzahl 0 und der Gleitkommawert 0.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()

php— editable, runs on the server

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);     // false

Wann 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

php— editable, runs on the server

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:

TypKonvertiert zu true wennKonvertiert zu false wenn
stringNicht leerer stringLeerer string ""
int / floatWert ungleich null0 oder 0.0
arrayNicht leeres arrayLeeres array []
nullNieImmer

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.

Übungen

Übung
Was macht die Funktion boolval in PHP?
Was macht die Funktion boolval in PHP?
Was this page helpful?