doubleval()
Lernen Sie PHP doubleval(), das einen Wert in einen float umwandelt und ein exakter Alias von floatval() ist. Syntax, Rückgabewerte und String-Parsing.
Einführung
Die Funktion doubleval() wandelt einen Wert in einen float (eine Zahl mit Nachkommastellen) um. Sie ist ein exakter Alias von floatval() — beide Funktionen teilen dieselbe Implementierung. Der Name existiert, weil PHP den Gleitkommatyp historisch als „double" bezeichnete; in PHP sind float und double derselbe Typ.
Sie verwenden doubleval() (oder floatval()), wenn Sie einen Wert eines unbekannten oder gemischten Typs haben — typischerweise einen string aus einer Formulareingabe, einem Query-String oder einer Datei — und eine zuverlässige Zahl für arithmetische Operationen benötigen.
Syntax
doubleval(mixed $value): float$value ist der zu konvertierende Wert. Es kann sich um einen string, integer, boolean oder einen anderen Skalar handeln. Die Funktion gibt den float-Wert von $value zurück oder 0.0, wenn der Wert nicht als Zahl interpretiert werden kann.
Rückgabewerte
Wie doubleval() einen Wert behandelt, hängt von dessen Typ ab:
- Numerischer string — wird bis zum ersten nicht-numerischen Zeichen geparst (
"3.14"→3.14). - Integer / float — wird als float zurückgegeben (
42→42.0intern). - Boolean —
true→1.0,false→0.0. null—0.0.- Nicht-numerischer string —
0.0. - Array —
1.0für ein nicht-leeres array,0.0für ein leeres (mit einer Warnung). Übergeben Sie keine arrays.
Grundlegendes Beispiel
Beachten Sie, dass die Ausgabe 42 und 1 lautet, nicht 42.0 und 1.0. Die Werte sind floats, aber echo gibt einen float ohne Nachkommastellen ohne abschliessendes .0 aus. Um den float-Typ explizit zu sehen, verwenden Sie var_dump():
<?php
var_dump(doubleval(42)); // float(42)
var_dump(doubleval(true)); // float(1)
var_dump(doubleval("3.14")); // float(3.14)
?>Strings mit führenden Zahlen parsen
doubleval() liest den führenden numerischen Teil eines strings und stoppt beim ersten Zeichen, das nicht Teil einer Zahl sein kann. Leerzeichen am Anfang werden übersprungen, und wissenschaftliche Notation wird erkannt.
<?php
echo doubleval("12.5kg") . "\n"; // 12.5 (stops at "k")
echo doubleval(" 7.0 ") . "\n"; // 7 (leading spaces ignored)
echo doubleval("1.2e3") . "\n"; // 1200 (scientific notation)
echo doubleval("abc12") . "\n"; // 0 (no leading number)
?>Dies macht es praktisch, eine Zahl aus einem string mit Einheitenangabe zu extrahieren, bedeutet aber auch, dass ein fehlerhafter Wert stillschweigend zu 0.0 wird, anstatt einen Fehler auszulösen — validieren Sie zuerst, wenn dieser Unterschied relevant ist.
doubleval() vs. (float)-Cast
Für skalare Werte erzeugen doubleval($x) und (float) $x dasselbe Ergebnis, weshalb der Cast im modernen Code meist bevorzugt wird. doubleval() ist jedoch als Callback nützlich, etwa mit array_map():
<?php
$inputs = ["1.5", "2", "3.75kg"];
$floats = array_map('doubleval', $inputs);
print_r($floats);
// Array ( [0] => 1.5 [1] => 2 [2] => 3.75 )
?>doubleval() vs. floatval()
Es gibt keinen funktionalen Unterschied — doubleval() ist ein definierter Alias von floatval(). Moderner Code sollte floatval() bevorzugen, da der Name klarer ist und dem float-Typnamen entspricht, der überall sonst in PHP verwendet wird.
Fazit
doubleval() wandelt jeden skalaren Wert in einen float um, parst den führenden numerischen Teil von strings und fällt auf 0.0 zurück, wenn keine Zahl gefunden wird. Sie ist identisch mit floatval(), was heute der bevorzugte Name ist. Zum Konvertieren in andere Typen siehe intval() und settype().