【PHP8.x】is_double関数の使い方
is_double関数の使い方について、初心者にもわかりやすく解説します。
基本的な使い方
is_double関数は、与えられた変数が浮動小数点数(floatまたはdouble)型であるかどうかを検査する関数です。この関数は、引数として確認したい変数一つを受け取ります。もしその変数のデータ型が浮動小数点数であれば論理値のtrueを返し、そうでなければfalseを返します。
PHPにおいて、float型とdouble型は同じ浮動小数点数型を指し、区別はありません。そのため、このis_double関数はis_float関数と同じ動作をします。変数が数値のように見えても、例えば「"3.14"」のような文字列型であったり、「10」のような整数型であったりした場合には、is_double関数はfalseを返します。
この関数は、プログラム内で特定の処理を行う前に、変数の型が期待通りの浮動小数点数であるかを確認したい場合に特に有用です。例えば、計算処理を行う前に、ユーザーからの入力値が正確な小数値として扱えるかどうかのバリデーション(検証)や、変数の型に応じた処理の分岐ロジックを実装する際に利用されます。変数の厳密な型チェックを通じて、予期せぬエラーを防ぎ、より堅牢なコードを記述するために役立ちます。
構文(syntax)
1<?php 2$value_to_check = 123.45; 3$is_it_double = is_double($value_to_check); 4var_dump($is_it_double); 5?>
引数(parameters)
mixed $value
- mixed $value: チェックする値を指定します。整数、浮動小数点数、文字列、配列、オブジェクトなど、PHPが扱えるあらゆる型を指定できます。
戻り値(return)
bool
与えられた変数がdouble型(浮動小数点数型)である場合にtrueを、そうでない場合にfalseを返します。
サンプルコード
PHP: is_double()で浮動小数点数を判定する
1<?php 2 3/** 4 * この関数は、入力値が `null` の場合にデフォルト値を使用し、 5 * その値が浮動小数点数(PHPでは `double` と `float` は同義)であるかどうかを `is_double()` で確認します。 6 * 7 * @param mixed $value 確認したい任意の型の値。`null` の可能性もあります。 8 * @return void 9 */ 10function checkDoubleWithNullCoalescing(mixed $value): void 11{ 12 // null合体演算子 (??) の使用例: 13 // $value が `null` の場合、右辺のデフォルト値 (ここでは 0.0) が $valueToTest に代入されます。 14 // $value が `null` でない場合、その値がそのまま $valueToTest に代入されます。 15 $valueToTest = $value ?? 0.0; 16 17 echo "元の値: " . (is_null($value) ? "NULL" : var_export($value, true)) . "\n"; 18 echo "null合体演算子 (??) 適用後の値: " . var_export($valueToTest, true) . "\n"; 19 20 // is_double() は、変数が浮動小数点数 (float) であるかを判定します。 21 if (is_double($valueToTest)) { 22 echo "判定結果: この値は浮動小数点数です。\n"; 23 } else { 24 echo "判定結果: この値は浮動小数点数ではありません。\n"; 25 } 26 echo "------------------------------------\n"; 27} 28 29// ----- 実行例 ----- 30 31// 1. 浮動小数点数を直接渡す場合 32checkDoubleWithNullCoalescing(123.45); 33 34// 2. `null` を渡す場合 (null合体演算子により 0.0 が $valueToTest に代入される) 35checkDoubleWithNullCoalescing(null); 36 37// 3. 整数を渡す場合 (is_double() は false を返す) 38checkDoubleWithNullCoalescing(100); 39 40// 4. 文字列を渡す場合 (is_double() は false を返す) 41checkDoubleWithNullCoalescing("abc"); 42 43// 5. true/false の真偽値を渡す場合 (is_double() は false を返す) 44checkDoubleWithNullCoalescing(true); 45 46?>
PHPのis_double()関数は、与えられた変数が浮動小数点数(PHPではdouble型とfloat型は同じものを指します)であるかどうかを判定するために使用されます。引数$valueには任意の型の値を指定でき、戻り値は判定結果を示す真偽値(trueまたはfalse)です。浮動小数点数であればtrueを、それ以外であればfalseを返します。
サンプルコードでは、まず??というnull合体演算子が使用されています。これは、左辺の値がnullの場合に右辺のデフォルト値を使い、nullでない場合は左辺の値をそのまま使うPHP 7以降で導入された便利な記法です。この例では、関数に渡される$valueがnullの場合に0.0という浮動小数点数をデフォルト値として設定し、その値に対してis_double()で浮動小数点数であるかを確認しています。
実行例を見ると、123.45のような浮動小数点数を渡すとtrueが返ります。また、nullを渡した場合は??によって0.0に変換されてからis_double()が適用され、trueとなります。しかし、整数値の100や文字列の"abc"、真偽値のtrueなどを渡した場合は、浮動小数点数ではないためis_double()はfalseを返します。この関数を使うことで、変数の型を正確に判断し、プログラムの信頼性を高めることができます。
PHPのis_double()関数は、変数が浮動小数点数であるかを厳密に判定します。PHPではis_float()と全く同じ機能を提供しますので、どちらを使用しても構いません。注意点として、is_double()は整数値や数値に見える文字列(例: "123.45")に対してはfalseを返します。これは変数の型を厳密にチェックするためです。
一方、??(null合体演算子)は、その左側の値がnullの場合にのみ、右側のデフォルト値を適用します。左側の値がnullでなければ、その元の値がそのまま使用されます。この演算子は、関数の引数やユーザー入力など、nullの可能性のある値に対して安全にデフォルト値を設定したい場合に非常に有用です。これらの機能を適切に利用することで、コードの予期せぬエラーを防ぎ、より堅牢なプログラムを作成できます。