Start · Sprachen · PHP · Referenz · is_bool

is_bool

Funktion

Prüft, ob eine Variable vom Typ <code>bool</code> ist und gibt <code>true</code> zurück, wenn dies der Fall ist.

seit PHP 4.0.0 Kategorie: type

Signatur

is_bool(mixed $value): bool

Beschreibung

is_bool() überprüft, ob der übergebene Wert vom Typ bool ist. Die Funktion gibt true zurück, wenn der Wert exakt true oder false ist – alle anderen Typen (auch 0, 1, "true" oder null) führen zu false.

Die Funktion ist besonders nützlich, wenn eine strikte Typprüfung notwendig ist, etwa bei der Validierung von Konfigurationswerten, Optionsparametern oder Rückgabewerten, bei denen boolesche Werte von Integer-Werten wie 0 und 1 unterschieden werden müssen.

Im Gegensatz zur losen Vergleichsoperation (==) oder einem einfachen Truthy-/Falsy-Test prüft is_bool() ausschließlich den tatsächlichen Datentyp und führt keine implizite Typumwandlung durch. Sie ist damit vergleichbar mit gettype($value) === 'boolean' oder $value instanceof bool (was in PHP nicht erlaubt ist).

Parameter

Name Typ Default Beschreibung
$value Pflicht mixed Der zu prüfende Wert. Kann von einem beliebigen Typ sein.

Rückgabewert

Typ
bool
Beschreibung
Gibt true zurück, wenn value vom Typ bool ist, andernfalls false.

Beispiele

Einfache Typprüfung verschiedener Werte

<?php
var_dump(is_bool(true));    // true
var_dump(is_bool(false));   // true
var_dump(is_bool(1));       // false — Integer, kein Boolean
var_dump(is_bool(0));       // false — Integer, kein Boolean
var_dump(is_bool('true'));  // false — String, kein Boolean
var_dump(is_bool(null));    // false — NULL, kein Boolean
bool(true) bool(true) bool(false) bool(false) bool(false) bool(false)

Validierung eines Konfigurationswertes

<?php
function setDebugMode(mixed $value): void {
    if (!is_bool($value)) {
        throw new InvalidArgumentException(
            'Der Debug-Modus muss ein boolescher Wert sein, ' . gettype($value) . ' gegeben.'
        );
    }
    echo 'Debug-Modus: ' . ($value ? 'aktiviert' : 'deaktiviert') . PHP_EOL;
}

setDebugMode(true);   // OK
setDebugMode(false);  // OK
setDebugMode(1);      // Wirft InvalidArgumentException
Debug-Modus: aktiviert Debug-Modus: deaktiviert Fatal error: Uncaught InvalidArgumentException: Der Debug-Modus muss ein boolescher Wert sein, integer gegeben.

Unterschied zwischen is_bool und Truthy-Prüfung

<?php
$values = [true, false, 1, 0, '', 'false', null];

foreach ($values as $val) {
    $display = var_export($val, true);
    $isBool  = is_bool($val) ? 'ja' : 'nein';
    $truthy  = $val ? 'truthy' : 'falsy';
    echo "Wert: {$display} => is_bool: {$isBool}, Truthy/Falsy: {$truthy}\n";
}
Wert: true => is_bool: ja, Truthy/Falsy: truthy Wert: false => is_bool: ja, Truthy/Falsy: falsy Wert: 1 => is_bool: nein, Truthy/Falsy: truthy Wert: 0 => is_bool: nein, Truthy/Falsy: falsy Wert: '' => is_bool: nein, Truthy/Falsy: falsy Wert: 'false' => is_bool: nein, Truthy/Falsy: truthy Wert: NULL => is_bool: nein, Truthy/Falsy: falsy

// Wichtig · Fallstricke

Strikte Typisierung als Alternative: In modernem PHP (ab 7.0) kann in typisierten Funktionen mit bool als Parametertyp und declare(strict_types=1) die Typprüfung direkt durch PHP erzwungen werden, was is_bool() in solchen Kontexten überflüssig macht.

Vorsicht bei JSON-Daten: Beim Dekodieren von JSON mit json_decode() werden boolesche JSON-Werte korrekt als PHP-bool abgebildet. Trotzdem ist eine Prüfung mit is_bool() sinnvoll, wenn sichergestellt werden soll, dass der Wert kein Integer oder ein anderer Typ ist.