Start · Sprachen · PHP · Referenz · is_scalar

is_scalar

Funktion

Prüft, ob eine Variable ein skalarer Wert ist (also <code>int</code>, <code>float</code>, <code>string</code> oder <code>bool</code>).

seit PHP 4.0.5 Kategorie: type

Signatur

is_scalar(mixed $value): bool

Beschreibung

is_scalar() gibt true zurück, wenn der übergebene Wert zu einem der vier skalaren Typen gehört: int, float, string oder bool. Alle anderen Typen – insbesondere array, object, null und resource – gelten als nicht-skalar und führen zu false.

Die Funktion ist nützlich, wenn man sicherstellen möchte, dass ein Eingabewert in einen einfachen atomaren Wert umgewandelt oder als solcher behandelt werden kann – etwa beim Validieren von Funktionsargumenten, beim Serialisieren von Daten oder beim Absichern von Ausgabepfaden. Sie erspart den manuellen Vergleich mehrerer Typprüfungen (is_int(), is_float() usw.).

Wichtig: null ist kein skalarer Typ in PHP – is_scalar(null) gibt false zurück, auch wenn null häufig neben skalaren Werten auftaucht. Wer null einschließen möchte, muss zusätzlich is_null() prüfen.

Parameter

Name Typ Default Beschreibung
$value Pflicht mixed Der zu prüfende Wert beliebigen Typs.

Rückgabewert

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

Beispiele

Grundlegende Typprüfungen mit is_scalar

<?php
var_dump(is_scalar(42));          // int
var_dump(is_scalar(3.14));        // float
var_dump(is_scalar('Hallo'));     // string
var_dump(is_scalar(true));        // bool

var_dump(is_scalar(null));        // null  -> false
var_dump(is_scalar([1, 2, 3]));   // array -> false
var_dump(is_scalar(new stdClass())); // object -> false
bool(true) bool(true) bool(true) bool(true) bool(false) bool(false) bool(false)

Eingabevalidierung in einer Hilfsfunktion

<?php
function formatWert(mixed $wert): string {
    if (!is_scalar($wert)) {
        throw new InvalidArgumentException(
            'Nur skalare Werte erlaubt, erhalten: ' . get_debug_type($wert)
        );
    }
    return (string) $wert;
}

echo formatWert(42)     . PHP_EOL; // '42'
echo formatWert(true)   . PHP_EOL; // '1'
echo formatWert('Test') . PHP_EOL; // 'Test'

try {
    echo formatWert(['a', 'b']);
} catch (InvalidArgumentException $e) {
    echo 'Fehler: ' . $e->getMessage() . PHP_EOL;
}
42 1 Test Fehler: Nur skalare Werte erlaubt, erhalten: array

// Wichtig · Fallstricke

Achtung: null wird von is_scalar() nicht als skalar betrachtet. Falls null ebenfalls akzeptiert werden soll, muss die Prüfung um is_null($value) oder einen === null-Vergleich erweitert werden.

Ressourcen (resource) geben ebenfalls false zurück, obwohl sie intern oft durch einen Integer-Handle repräsentiert werden.