【PHP8.x】doubleval関数の使い方

doubleval関数の使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

doubleval関数は、引数として渡された値を浮動小数点数(floatまたはdouble型)に変換して返す関数です。この関数は、PHPにおいてfloatval関数のエイリアス(別名)として機能します。

doubleval関数は、数値形式の文字列や整数、ブール値など、様々なデータ型の値を浮動小数点数に変換します。例えば、文字列の"123.45"を渡すと123.45という浮動小数点数に、整数値の10を渡すと10.0という浮動小数点数に変換されます。ブール値の場合、trueは1.0に、falseは0.0に変換され、NULLを渡した場合は0.0として扱われます。

ただし、配列やオブジェクトのような、数値として直接解釈できない型の値を渡した場合、通常は0.0が返されるか、あるいは入力値によっては適切な警告が発生することがあります。

この関数は、プログラム内で扱うデータの型を明示的に浮動小数点数に統一したい場合や、浮動小数点数を使った計算を行う前に、値が確実に浮動小数点数型であることを保証したい場合などに利用されます。型キャストの(float)(double)とほぼ同じ結果をもたらしますが、関数として使用することで、コードの意図をより明確に表現できます。

構文(syntax)

1$floatValue = doubleval(mixed $value);

引数(parameters)

mixed $value

  • mixed $value: 浮動小数点数に変換したい値。文字列、整数、浮動小数点数、配列、オブジェクト、NULLなどを指定できます。

戻り値(return)

float

指定された整数または文字列を倍精度浮動小数点数(float型)に変換した値を返します。

サンプルコード

PHP 8: floatval() による値の浮動小数点数変換

1<?php
2
3/**
4 * PHP 8における doubleval() 関数と floatval() 関数の関係性について
5 *
6 * PHP 8では、doubleval() 関数は削除されています。
7 * 以前のPHPバージョンでは、doubleval() は floatval() のエイリアス(別名)として存在し、
8 * 両者とも値を浮動小数点数(float)に変換する同じ機能を提供していました。
9 *
10 * PHP 8以降では、値を浮動小数点数に変換する際には floatval() を使用することが推奨されます。
11 * この関数は、mixed型の引数を受け取り、その値を浮動小数点数として解釈して float 型で返します。
12 *
13 * このサンプルコードでは、floatval() を使って様々な型の値を浮動小数点数に変換する例を示します。
14 */
15function demonstrateFloatConversion(): void
16{
17    echo "--- floatval() を使った値の浮動小数点数への変換 ---" . PHP_EOL . PHP_EOL;
18
19    // 整数値を浮動小数点数に変換
20    $intValue = 123;
21    $floatFromInt = floatval($intValue);
22    echo "整数 '{$intValue}' を変換: " . $floatFromInt . " (型: " . gettype($floatFromInt) . ")" . PHP_EOL;
23
24    // 文字列を浮動小数点数に変換
25    // 数値として認識できる部分までが変換されます
26    $stringValue = "456.789";
27    $floatFromString = floatval($stringValue);
28    echo "文字列 '{$stringValue}' を変換: " . $floatFromString . " (型: " . gettype($floatFromString) . ")" . PHP_EOL;
29
30    // 不正な数値文字列の変換
31    // 先頭から数値として認識できる部分のみが変換されます
32    $mixedString = "789abc";
33    $floatFromMixedString = floatval($mixedString);
34    echo "文字列 '{$mixedString}' を変換: " . $floatFromMixedString . " (型: " . gettype($floatFromMixedString) . ")" . PHP_EOL;
35
36    // 非数値文字列の変換
37    // 数値として認識できない文字列は 0.0 に変換されます
38    $nonNumericString = "hello";
39    $floatFromNonNumericString = floatval($nonNumericString);
40    echo "文字列 '{$nonNumericString}' を変換: " . $floatFromNonNumericString . " (型: " . gettype($floatFromNonNumericString) . ")" . PHP_EOL;
41
42    // 真偽値を浮動小数点数に変換
43    // true は 1.0、false は 0.0 になります
44    $boolTrue = true;
45    $floatFromTrue = floatval($boolTrue);
46    echo "真偽値 'true' を変換: " . $floatFromTrue . " (型: " . gettype($floatFromTrue) . ")" . PHP_EOL;
47
48    $boolFalse = false;
49    $floatFromFalse = floatval($boolFalse);
50    echo "真偽値 'false' を変換: " . $floatFromFalse . " (型: " . gettype($floatFromFalse) . ")" . PHP_EOL;
51
52    // null を浮動小数点数に変換
53    // null は 0.0 になります
54    $nullValue = null;
55    $floatFromNull = floatval($nullValue);
56    echo "null 値を変換: " . $floatFromNull . " (型: " . gettype($floatFromNull) . ")" . PHP_EOL;
57
58    // 配列を浮動小数点数に変換
59    // 空の配列は 0.0、非空の配列は 1.0 になります(警告が出る場合もあります)
60    $emptyArray = [];
61    $floatFromEmptyArray = floatval($emptyArray);
62    echo "空の配列 [] を変換: " . $floatFromEmptyArray . " (型: " . gettype($floatFromEmptyArray) . ")" . PHP_EOL;
63
64    $nonEmptyArray = [1, 2, 3];
65    $floatFromNonEmptyArray = floatval($nonEmptyArray);
66    echo "非空の配列 [1, 2, 3] を変換: " . $floatFromNonEmptyArray . " (型: " . gettype($floatFromNonEmptyArray) . ")" . PHP_EOL;
67
68    echo PHP_EOL . "--- doubleval() についての補足 ---" . PHP_EOL;
69    echo "PHP 8環境では、doubleval() 関数を直接呼び出すと、" .
70         "未定義の関数エラー('Call to undefined function doubleval()')が発生します。" . PHP_EOL .
71         "代わりに floatval() を使用してください。" . PHP_EOL;
72}
73
74// 関数を実行して結果を表示
75demonstrateFloatConversion();
76

PHP 8において、かつて値を浮動小数点数に変換するdoubleval()関数は、floatval()関数の別名として存在しましたが、現在は削除されています。そのため、PHP 8以降のバージョンでは、値を浮動小数点数(float型)に変換する際にはfloatval()関数を使用することが推奨されます。

floatval()関数は、mixed型の引数、つまり整数、文字列、真偽値、nullなど、様々なデータ型の値を受け取ります。そして、その値を浮動小数点数として解釈し、float型で返します。例えば、整数値はそのまま浮動小数点数に、"456.789"のような数値文字列は456.789に変換されます。true1.0に、falsenull、数値として認識できない文字列(例: "hello")は0.0に変換されます。また、空の配列は0.0、要素を持つ配列は1.0に変換される挙動を示します。

PHP 8環境でdoubleval()を直接呼び出すと、未定義関数エラーが発生しますのでご注意ください。プログラムで様々な型の値を数値として処理し、特に小数点以下の値が必要な場合には、floatval()関数を適切に利用してください。

PHP 8以降では、doubleval()関数は削除されており、使用すると「未定義の関数エラー」が発生します。値を浮動小数点数に変換する際は、代わりにfloatval()関数を使用してください。floatval()は様々な型の値を変換しますが、特に文字列の場合は、先頭の数値部分のみが変換され、非数値文字列やnullfalse、空の配列は0.0になります。非空の配列は1.0に変換されますが、場合によっては警告が出ることもあります。意図しない変換結果を防ぐため、引数の型や変換後の値には十分注意し、必要に応じて事前の型確認やバリデーションを行うことをお勧めします。

関連コンテンツ

【PHP8.x】doubleval関数の使い方 | いっしー@Webエンジニア