is_double()
is_double() ist ein veralteter Alias von is_float() in PHP. Er prüft, ob eine Variable ein Float ist. Seit PHP 8.0 wurde die Funktion entfernt.
Einführung
is_double() war ein Alias von is_float(), der prüft, ob eine Variable eine Gleitkommazahl enthält. Ein float (auch double genannt) ist der Datentyp, den PHP für Zahlen mit einem Nachkommaanteil verwendet, z. B. 3.14 oder 1.0e6.
Wichtig:
is_double()wurde vor langer Zeit als veraltet markiert und in PHP 8.0.0 entfernt. Verwenden Sie in jeder PHP-Versionis_float()— die Funktion ist verhaltensidentisch, wird unterstützt und ist besser lesbar. Diese Seite dokumentiertis_double(), damit Sie veralteten Code erkennen und migrieren können.
Dieses Kapitel behandelt die Syntax, was als Float gilt, das Verhalten des Rückgabewerts, den empfohlenen Ersatz und häufige Fallstricke.
Syntax
is_double(mixed $value): boolDie Funktion nimmt einen Parameter entgegen, $value, die zu prüfende Variable, und gibt true zurück, wenn $value vom Typ float ist, andernfalls false. Die Prüfung erfolgt auf den Typ, nicht darauf, ob die Zahl dezimal aussieht — siehe die Fallstricke unten.
Was als Float gilt
is_double() (und is_float()) gibt nur dann true zurück, wenn der Laufzeittyp der Variable float ist. Numerische Strings und ganzzahlige Integer sind keine Floats:
<?php
var_dump(is_float(3.14)); // bool(true)
var_dump(is_float(1.0e6)); // bool(true) — scientific notation is a float
var_dump(is_float(42)); // bool(false) — this is an int
var_dump(is_float("3.14")); // bool(false) — this is a string
var_dump(is_float(10 / 2)); // bool(true) — division always yields a float in PHP
?>Beachten Sie, dass 10 / 2 true ergibt: In PHP liefert der Operator / immer einen Float, auch wenn das Ergebnis mathematisch eine ganze Zahl ist.
Anwendungsbeispiel
Da die Ausgabe von boolean-Werten irreführend sein kann (true gibt 1 aus, false gibt nichts aus), verwenden Sie var_dump(), um das tatsächliche Ergebnis zu sehen:
$price ist ein echter Float, daher ist die Prüfung true. $count ist ein Integer und $label ist ein String, daher sind beide false.
Der moderne Ersatz: is_float()
Der Ersatz von is_double() ist eine einfache Umbenennung — Argumente und Rückgabewert sind identisch:
<?php
// Legacy (removed in PHP 8.0)
// if (is_double($value)) { ... }
// Modern, supported everywhere
$value = 9.99;
if (is_float($value)) {
echo "It's a float";
}
?>Wenn Sie Zahlen akzeptieren müssen, die möglicherweise ein Float, ein Integer oder ein numerischer String sind (zum Beispiel Formulareingaben), verwenden Sie stattdessen is_numeric() oder konvertieren Sie mit floatval().
Häufige Fallstricke
- Numerische Strings bestehen die Prüfung nicht.
is_float("3.14")istfalse. Benutzereingaben aus Formularen oder$_GETkommen als Strings an; validieren Sie zunächst mitis_numeric()und konvertieren Sie dann mitfloatval(). - Floats nicht auf exakte Gleichheit vergleichen. Aufgrund von Binärrundung ist
0.1 + 0.2 == 0.3false. Vergleichen Sie stattdessen mit einer kleinen Toleranz. is_doubleist in PHP 8+ nicht mehr verfügbar. Der Aufruf in PHP 8.0 oder höher erzeugt einen fatalen Fehler:Error: Call to undefined function is_double().
Siehe auch
is_float()— die aktuelle, unterstützte Funktion.is_int()— prüft auf Integer.is_numeric()— prüft auf Zahlen oder numerische Strings.floatval()— konvertiert einen Wert in einen Float.gettype()— gibt den Typ einer Variable direkt aus.
Fazit
is_double() ist ein entfernter Alias von is_float(). Verwenden Sie für neuen Code immer is_float(), um zu prüfen, ob ein Wert eine Gleitkommazahl ist, und behalten Sie is_double() nur im Gedächtnis, um veraltete Projekte bei der Migration auf PHP 8 oder höher aktualisieren zu können.