doubleval()
Apprenez à utiliser doubleval() en PHP pour convertir une valeur en float. Syntaxe, valeurs de retour et règles d'analyse des chaînes.
Introduction
La fonction doubleval() convertit une valeur en float (un nombre avec une partie décimale). C'est un alias exact de floatval() — les deux fonctions partagent la même implémentation. Ce nom existe parce que PHP appelait historiquement le type virgule flottante « double », et en PHP float et double désignent le même type.
On utilise doubleval() (ou floatval()) lorsqu'on dispose d'une valeur de type inconnu ou mixte — typiquement une string provenant d'un formulaire, d'une query string ou d'un fichier — et qu'on a besoin d'un nombre fiable pour effectuer des calculs.
Syntaxe
doubleval(mixed $value): float$value est la valeur à convertir. Il peut s'agir d'une string, d'un entier, d'un boolean ou d'un autre scalaire. La fonction renvoie la valeur float de $value, ou 0.0 lorsque la valeur ne peut pas être interprétée comme un nombre.
Valeurs de retour
La façon dont doubleval() traite une valeur dépend de son type :
- String numérique — analysée jusqu'au premier caractère non numérique (
"3.14"→3.14). - Entier / float — renvoyé en tant que float (
42→42.0en interne). - Boolean —
true→1.0,false→0.0. null—0.0.- String non numérique —
0.0. - Array —
1.0pour un array non vide,0.0pour un array vide (avec un avertissement). Évitez de passer des arrays.
Exemple de base
Notez que la sortie affiche 42 et 1, et non 42.0 et 1.0. Les valeurs sont des floats, mais echo affiche un float sans partie fractionnaire sans le .0 final. Pour voir le type float explicitement, utilisez var_dump() :
<?php
var_dump(doubleval(42)); // float(42)
var_dump(doubleval(true)); // float(1)
var_dump(doubleval("3.14")); // float(3.14)
?>Analyse des strings avec des nombres en tête
doubleval() lit la partie numérique de début d'une string et s'arrête au premier caractère qui ne peut pas faire partie d'un nombre. Les espaces en début de string sont ignorés, et la notation scientifique est prise en charge.
<?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)
?>Cela facilite l'extraction d'un nombre depuis une string avec unité, mais cela signifie aussi qu'une valeur malformée devient silencieusement 0.0 sans générer d'erreur — validez d'abord si cette distinction a de l'importance.
doubleval() vs. cast (float)
Pour les valeurs scalaires, doubleval($x) et (float) $x produisent le même résultat, c'est pourquoi le cast est généralement préféré dans le code moderne. doubleval() reste pratique en tant que callback, par exemple avec 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()
Il n'y a aucune différence fonctionnelle — doubleval() est un alias défini de floatval(). Le code moderne devrait préférer floatval() car le nom est plus clair et correspond au nom du type float utilisé partout ailleurs en PHP.
Conclusion
doubleval() convertit n'importe quelle valeur scalaire en float, en analysant la partie numérique de début des strings et en retournant 0.0 lorsqu'aucun nombre n'est trouvé. Elle est identique à floatval(), qui est aujourd'hui le nom préféré. Pour convertir vers d'autres types, consultez intval() et settype().