【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.450.0、そして科学的記数法で記述された1.23e-4といった値は、正しくfloat型と認識され、is_float()trueを返します。

しかし、1000のような整数値は、小数点がないためfloat型ではなく、is_float()falseを返します。また、"98.76"のように数字に見える文字列であっても、PHP内部では文字列型として扱われるため、is_float()falseとなります。真偽値のtruenull、配列なども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を避けるには、変数に格納されている値の型を常に意識することが重要です。

関連コンテンツ