Signatur
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
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
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;
}
// 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.