【PHP8.x】is_float()関数の使い方
is_float関数の使い方について、初心者にもわかりやすく解説します。
基本的な使い方
is_float関数は、引数として渡された変数が浮動小数点数(float型)であるかどうかを判定する関数です。この関数は、変数のデータ型を検査し、その変数が浮動小数点数型であればブール値の true を返し、そうでなければ false を返します。例えば、3.14 のような小数が含まれる数値や、指数表記の数値(例: 1.2e3)は浮動小数点数として認識され true を返します。一方、10 のような整数、"hello" のような文字列、配列、オブジェクト、または null など、浮動小数点数型ではない値に対しては false を返します。PHPでは float 型と double 型は同じものとして扱われるため、double 型の変数も同様に true と判定されます。この関数は、プログラム中で変数の型を正確に把握し、特に数値演算を行う前や、ユーザーからの入力値が期待する浮動小数点数であることを確認する際に非常に有用です。これにより、型の不一致による予期せぬエラーを防ぎ、堅牢なコードを記述するのに役立ちます。
構文(syntax)
1<?php 2$value = 1.23; 3$isFloat = is_float($value); 4?>
引数(parameters)
mixed $value
- mixed $value: 浮動小数点数かどうかを判定したい値
戻り値(return)
bool
引数で渡された値が浮動小数点数型(float型)である場合に true を、そうでない場合に false を返します。
サンプルコード
PHP is_float() で型を判定する
1<?php 2 3/** 4 * is_float() 関数の使用例を示します。 5 * この関数は、指定された変数が浮動小数点数(float)型であるかどうかをチェックします。 6 */ 7function demonstrateIsFloat(): void 8{ 9 echo "--- is_float() 関数デモンストレーション ---" . PHP_EOL; 10 11 // 浮動小数点数の例 12 $floatValue = 123.45; 13 $zeroFloat = 0.0; 14 $scientificNotation = 1.23e-4; // 科学的記数法も浮動小数点数として扱われます 15 16 // 整数の例 (浮動小数点数ではない) 17 $intValue = 100; 18 $zeroInt = 0; 19 20 // 文字列の例 (浮動小数点数ではない) 21 $stringFloat = "98.76"; // 文字列として扱われるため、is_floatはfalseを返します 22 $stringInt = "500"; 23 $stringText = "Hello"; 24 25 // その他の型の例 26 $boolValue = true; 27 $nullValue = null; 28 $arrayValue = [1, 2, 3]; 29 30 echo "変数の型と is_float() の結果:" . PHP_EOL; 31 32 // 各変数の型と is_float() の結果を表示 33 echo sprintf( 34 "%-20s (型: %-8s) -> is_float(): %s" . PHP_EOL, 35 "'" . var_export($floatValue, true) . "'", 36 get_debug_type($floatValue), 37 var_export(is_float($floatValue), true) 38 ); 39 echo sprintf( 40 "%-20s (型: %-8s) -> is_float(): %s" . PHP_EOL, 41 "'" . var_export($zeroFloat, true) . "'", 42 get_debug_type($zeroFloat), 43 var_export(is_float($zeroFloat), true) 44 ); 45 echo sprintf( 46 "%-20s (型: %-8s) -> is_float(): %s" . PHP_EOL, 47 "'" . var_export($scientificNotation, true) . "'", 48 get_debug_type($scientificNotation), 49 var_export(is_float($scientificNotation), true) 50 ); 51 52 echo sprintf( 53 "%-20s (型: %-8s) -> is_float(): %s" . PHP_EOL, 54 "'" . var_export($intValue, true) . "'", 55 get_debug_type($intValue), 56 var_export(is_float($intValue), true) 57 ); 58 echo sprintf( 59 "%-20s (型: %-8s) -> is_float(): %s" . PHP_EOL, 60 "'" . var_export($zeroInt, true) . "'", 61 get_debug_type($zeroInt), 62 var_export(is_float($zeroInt), true) 63 ); 64 65 echo sprintf( 66 "%-20s (型: %-8s) -> is_float(): %s" . PHP_EOL, 67 "'" . var_export($stringFloat, true) . "'", 68 get_debug_type($stringFloat), 69 var_export(is_float($stringFloat), true) 70 ); 71 echo sprintf( 72 "%-20s (型: %-8s) -> is_float(): %s" . PHP_EOL, 73 "'" . var_export($stringInt, true) . "'", 74 get_debug_type($stringInt), 75 var_export(is_float($stringInt), true) 76 ); 77 echo sprintf( 78 "%-20s (型: %-8s) -> is_float(): %s" . PHP_EOL, 79 "'" . var_export($stringText, true) . "'", 80 get_debug_type($stringText), 81 var_export(is_float($stringText), true) 82 ); 83 84 echo sprintf( 85 "%-20s (型: %-8s) -> is_float(): %s" . PHP_EOL, 86 "'" . var_export($boolValue, true) . "'", 87 get_debug_type($boolValue), 88 var_export(is_float($boolValue), true) 89 ); 90 echo sprintf( 91 "%-20s (型: %-8s) -> is_float(): %s" . PHP_EOL, 92 "'" . var_export($nullValue, true) . "'", 93 get_debug_type($nullValue), 94 var_export(is_float($nullValue), true) 95 ); 96 echo sprintf( 97 "%-20s (型: %-8s) -> is_float(): %s" . PHP_EOL, 98 "'" . var_export($arrayValue, true) . "'", 99 get_debug_type($arrayValue), 100 var_export(is_float($arrayValue), true) 101 ); 102} 103 104// 関数の実行 105demonstrateIsFloat(); 106
PHPのis_float()関数は、指定された変数が浮動小数点数(float型)であるかどうかを正確に判定するために使用されます。この関数は、引数$valueにどのような型の値が渡されても、その値がfloat型である場合にのみtrue(真)を返し、それ以外の型である場合はfalse(偽)をブール値として返します。
サンプルコードでは、この関数の動作を具体的な例で示しています。123.45や0.0、そして科学的記数法で記述された1.23e-4といった値は、正しくfloat型と認識され、is_float()はtrueを返します。
しかし、100や0のような整数値は、小数点がないためfloat型ではなく、is_float()はfalseを返します。また、"98.76"のように数字に見える文字列であっても、PHP内部では文字列型として扱われるため、is_float()はfalseとなります。真偽値のtrue、null、配列などもfloat型ではないため、同様にfalseが返されることを確認できます。この関数は、プログラムで数値の型を厳密に区別したい場合に非常に有用です。
is_float()関数は、引数が厳密に浮動小数点数(float)型であるかを判定します。そのため、見た目が数値であっても、"98.76"のような文字列型の値はfalseを返しますので注意が必要です。これらの文字列を浮動小数点数として扱いたい場合は、事前にfloatval()関数などで型を変換してから利用してください。また、100のような整数型の値も、浮動小数点数とは異なる型と判断されfalseとなります。科学的記数法で記述された数値(例: 1.23e-4)は正しく浮動小数点数と判定されます。この関数は、変数の型を正確に確認し、予期せぬデータ型の混入による問題を避けるために非常に有用です。
PHPの is_float() の型チェック挙動を理解する
1<?php 2 3/** 4 * is_float 関数の厳密な型チェックの挙動を様々な値で確認するサンプルコード。 5 * 6 * 'php is_float not working' というキーワードに対応し、 7 * 数値形式の文字列や整数値が false を返す理由を明確に理解することを目的とします。 8 */ 9 10// 1. 純粋な浮動小数点数 (float) 11$valueFloat = 3.14; 12echo "Value: " . var_export($valueFloat, true) . " (float) => is_float: " . var_export(is_float($valueFloat), true) . "\n"; 13// 期待通り true を返します。 14 15$valueZeroFloat = 0.0; 16echo "Value: " . var_export($valueZeroFloat, true) . " (float) => is_float: " . var_export(is_float($valueZeroFloat), true) . "\n"; 17// 0.0 も浮動小数点数として true を返します。 18 19// 2. 整数値 (int) 20$valueInt = 10; 21echo "Value: " . var_export($valueInt, true) . " (int) => is_float: " . var_export(is_float($valueInt), true) . "\n"; 22// 整数は浮動小数点数とは異なる型のため、false を返します。 23// もし数値全般 (整数、浮動小数点数、数値形式の文字列) をチェックしたい場合は is_numeric() を使用してください。 24 25$valueZeroInt = 0; 26echo "Value: " . var_export($valueZeroInt, true) . " (int) => is_float: " . var_export(is_float($valueZeroInt), true) . "\n"; 27// 0 も整数であり、false を返します。 28 29// 3. 数値形式の文字列 (string) 30$valueStringFloat = "123.45"; 31echo "Value: " . var_export($valueStringFloat, true) . " (string) => is_float: " . var_export(is_float($valueStringFloat), true) . "\n"; 32// 数値形式の文字列であっても、データ型が string のため false を返します。 33// この挙動が「is_float not working」と感じる典型的なケースです。 34// 文字列が数値として有効かを確認したい場合は is_numeric() (例: is_numeric("123.45") は true) を使用してください。 35 36$valueStringInt = "100"; 37echo "Value: " . var_export($valueStringInt, true) . " (string) => is_float: " . var_export(is_float($valueStringInt), true) . "\n"; 38// 整数形式の文字列も string 型のため false を返します。 39 40// 4. その他の型 41$valueString = "hello"; 42echo "Value: " . var_export($valueString, true) . " (string) => is_float: " . var_export(is_float($valueString), true) . "\n"; 43// 非数値文字列は false を返します。 44 45$valueNull = null; 46echo "Value: " . var_export($valueNull, true) . " (null) => is_float: " . var_export(is_float($valueNull), true) . "\n"; 47// null は false を返します。 48 49$valueBool = true; 50echo "Value: " . var_export($valueBool, true) . " (bool) => is_float: " . var_export(is_float($valueBool), true) . "\n"; 51// 論理値は false を返します。 52 53$valueArray = [1.0]; 54echo "Value: " . var_export($valueArray, true) . " (array) => is_float: " . var_export(is_float($valueArray), true) . "\n"; 55// 配列は false を返します。
PHPのis_float関数は、指定された変数のデータ型が厳密に浮動小数点数(float型)であるかどうかを判定します。引数 $value には任意の型の値を指定でき、戻り値は判定結果を示す真偽値(bool型)で、浮動小数点数であれば true、それ以外の場合は false を返します。
この関数は、数値形式の文字列(例: "123.45")や整数値(例: 10)に対しては false を返します。これは、is_floatが値の内容ではなく、その変数の「実際のデータ型」を厳しくチェックするためです。例えば 3.14 のような純粋な浮動小数点数のみが true と判定されます。
「is_float not working」と感じられるケースの多くは、文字列で表現された数値や整数値を浮動小数点数として扱いたい場合に発生します。もし変数が数値として有効かどうか(整数、浮動小数点数、数値形式の文字列を含む)を幅広く確認したい場合は、is_numeric() 関数を使用するのが適切です。is_floatは、コード内で確実に浮動小数点数型であるかを検証したい場合に利用します。
is_float関数は、与えられた値のデータ型が厳密に浮動小数点数(floatまたはdouble)であるかをチェックします。整数値(int型)は、たとえ小数点以下のない数値であっても、浮動小数点数ではないためfalseを返します。また、数値形式の文字列(例: "123.45")も、データ型が文字列であるためfalseを返します。この挙動が「is_float not working」と感じる主な理由です。数値全般(整数、浮動小数点数、数値形式の文字列)が数値として有効かを確認したい場合は、is_numeric()関数を使用してください。is_floatは厳密な型チェックを行うため、意図しないfalseを避けるには、変数に格納されている値の型を常に意識することが重要です。
PHPでis_floatまたはis_intを判定する
1<?php 2 3/** 4 * 与えられた値が浮動小数点数または整数であるかを判定し、その結果を出力します。 5 * 6 * システムエンジニアを目指す初心者の方へ: 7 * この関数は、PHPの `is_float()` と `is_int()` 関数を使って、 8 * 変数のデータ型が浮動小数点数 (float) なのか、整数 (integer) なのかを調べます。 9 * 両方の条件を組み合わせることで、「浮動小数点数または整数」であるかを判定する例も示しています。 10 * 11 * @param mixed $value 判定する任意の型の値 12 * @return void 結果は標準出力に出力されます 13 */ 14function checkNumberType(mixed $value): void 15{ 16 echo "--- 判定開始 ---\n"; 17 echo "判定する値: " . var_export($value, true) . "\n"; 18 19 // is_float() を使用して、値が浮動小数点数であるかを判定 20 if (is_float($value)) { 21 echo " -> この値は浮動小数点数 (float) です。\n"; 22 } 23 // is_int() を使用して、値が整数であるかを判定 24 elseif (is_int($value)) { 25 echo " -> この値は整数 (integer) です。\n"; 26 } 27 // どちらでもない場合 28 else { 29 echo " -> この値は浮動小数点数でも整数でもありません。\n"; 30 } 31 32 // キーワード「is float or int」に対応する判定 33 if (is_float($value) || is_int($value)) { 34 echo " -> また、この値は「浮動小数点数 または 整数」のいずれかです。\n"; 35 } else { 36 echo " -> この値は「浮動小数点数 または 整数」ではありません。\n"; 37 } 38 echo "--- 判定終了 ---\n\n"; 39} 40 41// 様々な型の値を試して動作を確認します 42checkNumberType(100); // 整数 43checkNumberType(3.14); // 浮動小数点数 44checkNumberType(-5); // 整数 45checkNumberType(0.0); // 浮動小数点数 (ゼロですが浮動小数点型です) 46checkNumberType("Hello"); // 文字列 47checkNumberType(true); // 真偽値 48checkNumberType(null); // NULL値 49checkNumberType(M_PI); // PHPの組み込み定数 M_PI (円周率) も浮動小数点数 50 51?>
このPHPサンプルコードは、与えられた値が浮動小数点数(float)または整数(integer)であるかを判別する方法を示します。PHP 8の組み込み関数is_float()とis_int()を使用します。
is_float(mixed $value)関数は、引数$valueに渡された値が浮動小数点数である場合にtrueを、そうでなければfalseを返します。同様に、is_int(mixed $value)関数も、引数が整数である場合にtrueを、そうでなければfalseを返します。これらの関数は任意の型の値を受け入れ、戻り値は常に真偽値(bool)です。
サンプルコード内のcheckNumberType関数は、これらの関数を用いて引数のデータ型を判定し、その結果を画面に出力します。特に、is_float($value) || is_int($value)という条件式では、||(論理和)演算子により、「浮動小数点数 または 整数」のいずれかであるかを同時に判別しています。
コードの実行部では、整数、浮動小数点数、文字列など様々なデータ型の値を実際にcheckNumberType関数に渡し、それぞれの値がどのように判別されるかを確認できます。プログラミングにおいて、値のデータ型を正確に判別することは、プログラムが意図通りに動作し、予期せぬエラーを防ぐための重要な基礎知識となります。
このコードは、変数が厳密に浮動小数点数または整数であるかを判定する際に役立ちます。初心者が間違いやすい点として、PHPのis_float()やis_int()は、文字列型の数値(例: "123")を数値とは判定しないことに注意してください。これはis_numeric()とは異なる挙動です。また、0.0のように小数点以下がゼロでも型がfloatである場合があるため、is_int()ではfalseとなります。型を厳密にチェックしたい場合にこれらの関数を使用し、数値として扱えるかを判定したい場合はis_numeric()を検討するなど、目的に応じて使い分けましょう。PHPのデータ型の理解を深めることが、安全で正しいコードを書くための第一歩です。
PHP: is_float()で型判定する
1<?php 2 3/** 4 * PHPのis_float()関数の挙動を様々な値でテストするサンプルコード。 5 * 6 * システムエンジニアを目指す初心者向けに、変数が浮動小数点数型(float)であるかを 7 * 判定するis_float()関数の基本的な使い方と、特に数値に見える文字列に対する挙動に焦点を当てて示します。 8 */ 9function demonstrateIsFloat(): void 10{ 11 echo "--- PHP is_float() 関数テスト ---" . PHP_EOL . PHP_EOL; 12 13 // 1. float (浮動小数点数) 型の変数 14 echo "--- float 型の変数 (例: 123.45) ---" . PHP_EOL; 15 $floatValue = 123.45; 16 var_dump($floatValue); 17 var_dump(is_float($floatValue)); // 期待値: true (float型なので) 18 echo PHP_EOL; 19 20 // 2. int (整数) 型の変数 21 echo "--- int 型の変数 (例: 123) ---" . PHP_EOL; 22 $intValue = 123; 23 var_dump($intValue); 24 var_dump(is_float($intValue)); // 期待値: false (int型なので) 25 echo PHP_EOL; 26 27 // 3. 数値に見える文字列 (小数点を含む) 28 // is_float()は変数の「型」を厳密にチェックするため、文字列はたとえ数値に見えてもfloat型とは判定されません。 29 echo "--- 数値に見える文字列 (例: '123.45') ---" . PHP_EOL; 30 $numericStringFloat = "123.45"; 31 var_dump($numericStringFloat); 32 var_dump(is_float($numericStringFloat)); // 期待値: false (string型なので) 33 echo PHP_EOL; 34 35 // 4. 数値に見える文字列 (整数) 36 echo "--- 数値に見える文字列 (例: '123') ---" . PHP_EOL; 37 $numericStringInt = "123"; 38 var_dump($numericStringInt); 39 var_dump(is_float($numericStringInt)); // 期待値: false (string型なので) 40 echo PHP_EOL; 41 42 // 5. 完全に数値ではない文字列 43 echo "--- 完全に数値ではない文字列 (例: 'hello world') ---" . PHP_EOL; 44 $nonNumericString = "hello world"; 45 var_dump($nonNumericString); 46 var_dump(is_float($nonNumericString)); // 期待値: false 47 echo PHP_EOL; 48 49 // 6. null 値 50 echo "--- null 値 ---" . PHP_EOL; 51 $nullValue = null; 52 var_dump($nullValue); 53 var_dump(is_float($nullValue)); // 期待値: false 54 echo PHP_EOL; 55 56 // 7. boolean (真偽値) 57 echo "--- boolean 値 (例: true) ---" . PHP_EOL; 58 $booleanValue = true; 59 var_dump($booleanValue); 60 var_dump(is_float($booleanValue)); // 期待値: false 61 echo PHP_EOL; 62} 63 64// 関数を実行して結果を表示 65demonstrateIsFloat();
このサンプルコードは、PHP 8で利用できるis_float()関数の使い方と、その挙動を様々なデータ型で確認する方法を学ぶためのものです。
is_float()関数は、与えられた変数(引数$value)が「浮動小数点数型(float)」であるかを厳密に判定し、その結果を真偽値(trueまたはfalse)として返します。引数にはどのような型の値でも指定できますが、戻り値は常にbool型となります。
コードでは、まず実際の浮動小数点数である変数に対してis_float()を実行し、trueが返されることを確認します。次に、整数型(int)の変数ではfalseが返されることを示しています。
特に重要な点として、is_float()は変数の「型」を厳密にチェックします。そのため、「123.45」のような小数点を含む数値に見える文字列や、「123」のような整数に見える文字列に対しても、変数の型が文字列型(string)であるため、falseを返します。これは、値が数値として解釈可能かどうかを判定するis_numeric()関数とは異なる挙動ですので注意が必要です。
さらに、完全に数値ではない文字列、null値、真偽値(boolean)なども浮動小数点数型ではないため、すべてfalseと判定されることをこのサンプルコードで確認できます。この関数を使うことで、変数のデータ型を正確に把握し、プログラムの意図しない動作を防ぐことができます。
is_float()関数は、引数の「データ型」が厳密に浮動小数点数(float)であるかを判定します。最も注意すべき点は、数値に見える文字列(例えば"123.45"や"123")を渡しても、その実際の型がstringである限りfalseを返すことです。これは、値が浮動小数点数として解釈可能かどうかではなく、変数が現在保持している型がfloatであるかを厳しく確認しているためです。整数(int)もfloatとは判定されません。もし、文字列が数値として有効であるかを確認したい場合は、is_numeric()などの別の関数をご検討ください。この関数の厳密な型チェックを理解することが、予期せぬ挙動を防ぐ上で重要です。