Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【PHP8.x】is_numeric()関数の使い方

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

作成日: 更新日:

基本的な使い方

is_numeric関数は、指定された変数が数値であるかどうかを判定する関数です。

この関数は、整数や浮動小数点数といった実際の数値型だけでなく、数値として解釈できる文字列(例えば "123"、"3.14"、"-10"、"1.2e3"、"0x1A" など)も数値として認識します。これにより、さまざまな形式の数値を柔軟に扱えます。

引数に渡された値が数値または数値形式の文字列である場合、この関数は真偽値の「true」を返します。一方、空文字列、アルファベットを含む文字列、配列、オブジェクト、NULLなどの非数値型の値に対しては「false」を返します。

この関数は、主にユーザーからの入力値や外部から取得したデータが期待通りの数値形式であるかを確認するバリデーション処理で利用されます。数値演算を行う前にデータの整合性を確保し、予期せぬエラーを防ぐために非常に役立ちます。

構文(syntax)

1var_dump(is_numeric("123"));

引数(parameters)

mixed $value

  • mixed $value: 数値として解釈できる値(整数、浮動小数点数、数値文字列)

戻り値(return)

bool

与えられた値が数値、または数値として解釈できる文字列である場合にtrueを、それ以外の場合にfalseを返します。

サンプルコード

PHP is_numeric()で負の数を判定する

1<?php
2
3/**
4 * PHPのis_numeric()関数の使用例を示す関数。
5 *
6 * この関数は、さまざまなデータ型が数値として認識されるかどうかをテストし、
7 * 特にキーワードである「マイナス」に関連する負の数(整数、浮動小数点数、文字列形式)が
8 * どのようにis_numeric()関数によって扱われるかを実演します。
9 */
10function demonstrateIsNumericUsage(): void
11{
12    echo "--- PHP is_numeric() 関数のデモンストレーション ---" . PHP_EOL;
13    echo "is_numeric() 関数は、変数が数値、または数値形式の文字列であるかを検査します。" . PHP_EOL . PHP_EOL;
14
15    // is_numeric()関数の動作をテストするための値のコレクションです。
16    // 特に「マイナス」のキーワードに関連する負の値を複数含めています。
17    $testValues = [
18        '正の整数 (123)' => 123,
19        '負の整数 (-456)' => -456, // 負の整数も数値として認識されます。
20        '浮動小数点数 (3.14)' => 3.14,
21        '負の浮動小数点数 (-2.718)' => -2.718, // 負の浮動小数点数も数値として認識されます。
22        'ゼロ (0)' => 0,
23        '数値形式の文字列 ("789")' => "789",
24        '負の数値形式の文字列 ("-1011")' => "-1011", // 負の数値形式の文字列も数値として認識されます。
25        '浮動小数点数形式の文字列 ("12.34")' => "12.34",
26        '科学記法文字列 ("1.2e3")' => "1.2e3", // 科学記法で書かれた数値文字列も数値として認識されます。
27        'ゼロから始まる数値形式の文字列 ("0123")' => "0123", // 先頭にゼロがあっても数値として認識されます。
28        '非数値文字列 ("hello")' => "hello",
29        '数値と非数値が混在した文字列 ("123abc")' => "123abc", // 非数値文字が混ざると数値とは認識されません。
30        '空文字列 ("")' => "", // 空文字列は数値とは認識されません。
31        '真偽値 (true)' => true, // trueはis_numeric()では数値とみなされません (falseを返します)。
32        '真偽値 (false)' => false, // falseはis_numeric()では数値とみなされません (falseを返します)。
33        'NULL値 (null)' => null, // NULLは数値とは認識されません。
34        '配列 (例: [1])' => [1], // 配列は数値とは認識されません。
35    ];
36
37    // 各テスト値に対してis_numeric()関数を適用し、結果を出力します。
38    foreach ($testValues as $description => $value) {
39        $result = is_numeric($value); // is_numeric()関数を実行
40        $type = gettype($value);      // 値のデータ型を取得
41
42        // 出力表示のために、値を文字列に変換します。
43        // スカラー値(数値、文字列、真偽値など)でない場合は、var_export()で詳細を表示します。
44        $displayValue = is_scalar($value) ? (string)$value : var_export($value, true);
45
46        echo "値: {$description} (型: {$type}, 実際の値: '{$displayValue}') => is_numeric(): "
47             . ($result ? "true" : "false") . PHP_EOL;
48    }
49
50    echo PHP_EOL . "--- まとめ ---" . PHP_EOL;
51    echo "is_numeric() は、整数、浮動小数点数、およびそれらの数値形式の文字列に対して true を返します。" . PHP_EOL;
52    echo "特に、負の数(例: -456, -2.718, \"-1011\")も正しく数値として判定されることを確認できます。" . PHP_EOL;
53    echo "しかし、真偽値、NULL、空文字列、非数値を含む文字列、配列などは数値とは判定されません。" . PHP_EOL;
54}
55
56// 上記のデモンストレーション関数を実行します。
57demonstrateIsNumericUsage();

PHPのis_numeric()関数は、与えられた変数が数値であるか、または数値形式の文字列であるかを検査するために使用されます。引数$valueには、検査したい任意の型の値を指定します。この関数は、引数が数値として認識されれば真(true)を、認識されなければ偽(false)をブール値で返します。

この関数は、正の整数、負の整数(例:-456)、浮動小数点数、そして負の浮動小数点数(例:-2.718)といった数値型に対してtrueを返します。また、数値形式の文字列(例:"789"、"-1011"、"12.34")や科学記法で書かれた数値文字列(例:"1.2e3")も数値と判断し、trueを返します。特に、キーワードである「マイナス」が示す通り、負の値であっても正確に数値として判定される点が重要です。

一方で、非数値文字を含む文字列(例:"hello"、"123abc")、空文字列("")、真偽値(truefalse)、NULL値、そして配列などの複雑なデータ型は数値とは判断されず、falseを返します。これにより、プログラム中でユーザー入力のバリデーションやデータ型のチェックを行う際に、信頼性の高い数値判定を行うことができます。

PHPのis_numeric()関数は、引数が数値または数値形式の文字列である場合にtrueを返します。正の数だけでなく、負の整数や浮動小数点数、さらに負の値を表す文字列(例: "-456", "-10.5", "1.2e3")も数値として正しく判定されますのでご安心ください。ただし、"123abc"のような非数値文字が混ざった文字列、空文字列、true/falseといった真偽値、NULL、配列などは数値と判定されません。厳密に「整数型」や「浮動小数点数型」であることを確認したい場合は、is_int()is_float()関数を使用し、目的に応じて使い分けることが重要です。ユーザーからの入力を検証する際は、より安全なバリデーション関数も検討することをお勧めします。

PHP is_numeric関数で値の数値判定をする

1<?php
2
3/**
4 * is_numeric() 関数の基本的な使い方を示すサンプルコードです。
5 * さまざまな型の値が数値として認識されるかを確認します。
6 */
7function demonstrateIsNumeric(): void
8{
9    // 数値として認識される値をテスト
10    echo "--- 数値として認識される値 ---\n";
11    $valuesToTestTrue = [
12        123,          // 整数
13        -456,         // 負の整数
14        3.14,         // 浮動小数点数
15        -0.5,         // 負の浮動小数点数
16        "789",        // 数値文字列
17        "-123.45",    // 負の浮動小数点数文字列
18        "1e5",        // 指数表記の数値文字列
19        "  123   ",   // 前後の空白を持つ数値文字列
20    ];
21
22    foreach ($valuesToTestTrue as $value) {
23        $type = gettype($value);
24        $result = is_numeric($value) ? 'TRUE' : 'FALSE';
25        echo "値: " . (is_string($value) ? "'{$value}'" : var_export($value, true))
26             . " (型: {$type}) => is_numeric() は {$result} を返します。\n";
27    }
28
29    // 数値として認識されない値をテスト
30    echo "\n--- 数値として認識されない値 ---\n";
31    $valuesToTestFalse = [
32        "abc",        // 非数値文字列
33        "123a",       // 数値と文字が混在する文字列
34        "0x1A",       // 16進数文字列 (is_numericはfalseを返す)
35        true,         // ブール値
36        false,        // ブール値
37        null,         // null
38        [],           // 配列
39        (object)[],   // オブジェクト
40    ];
41
42    foreach ($valuesToTestFalse as $value) {
43        $type = gettype($value);
44        $result = is_numeric($value) ? 'TRUE' : 'FALSE';
45        echo "値: " . (is_string($value) ? "'{$value}'" : var_export($value, true))
46             . " (型: {$type}) => is_numeric() は {$result} を返します。\n";
47    }
48}
49
50// 関数の実行
51demonstrateIsNumeric();

PHPのis_numeric関数は、指定された値が数値であるか、または数値形式の文字列であるかを判定するために使用されます。この関数は、引数としてmixed $valueを受け取ります。これは、整数、浮動小数点数、指数表記を含む数値文字列、前後に空白を持つ数値文字列など、さまざまな型の値を指定できることを意味します。

is_numeric関数は、判定の結果をbool型の真偽値で返します。指定された値が数値または数値形式の文字列と判断された場合はtrueを、それ以外の場合はfalseを返します。

提供されたサンプルコードでは、この関数の具体的な挙動を確認できます。まず、123のような整数、3.14のような浮動小数点数、"789""1e5"のような数値文字列、" 123 "のような前後に空白を持つ数値文字列がtrueを返す例が示されています。これらの値は、is_numericによって数値として認識されます。次に、"abc"のような非数値文字列、truefalseといったブール値、null、配列、オブジェクトなどがfalseを返す例が示されており、is_numericがどのような値を数値と見なさないかが明確に分かります。この関数は、プログラムで受け取ったデータが期待する数値形式であるかを検証する際に非常に役立ちます。

is_numeric()関数は、引数が整数や浮動小数点数であるか、またはそれらを表す「数値形式の文字列」である場合にTRUEを返します。例えば"123""3.14""1e5"のような文字列、また前後に空白を含む文字列も数値と認識される点に注意してください。一方で、"abc"のような非数値文字列はもちろん、"123a"のように数値と文字が混在する文字列、そして特に初心者が間違いやすい「"0x1A"のような16進数表記の文字列」はFALSEを返します。この関数は、値が広義の数値として処理可能かを判断する際に有用ですが、厳密な数値型チェック(例: is_int())とは挙動が異なるため、目的に応じた使い分けが重要です。

PHP is_numeric関数で小数を判定する

1<?php
2
3/**
4 * PHPのis_numeric関数が様々な型の値をどのように判定するかを示すサンプルコードです。
5 * 特に小数(浮動小数点数)や、小数を含む数値文字列の判定に焦点を当てています。
6 *
7 * @param mixed $value is_numericで判定する値
8 * @param string $description その値の説明
9 */
10function demonstrateIsNumericCase(mixed $value, string $description): void
11{
12    $result = is_numeric($value);
13    
14    // 出力表示のために値を文字列化。真偽値やnullは特別な表示にする。
15    $valueString = match (true) {
16        is_bool($value) => $value ? 'true' : 'false',
17        is_null($value) => 'null',
18        is_scalar($value) => (string)$value,
19        default => gettype($value), // 配列やオブジェクトの場合
20    };
21
22    echo sprintf(
23        "説明: %-35s | 値: %-18s | 型: %-10s | is_numeric(): %s\n",
24        $description,
25        $valueString,
26        gettype($value),
27        $result ? 'true' : 'false'
28    );
29}
30
31/**
32 * is_numeric関数の挙動を様々な値で確認するメイン関数。
33 * システムエンジニアを目指す初心者にも分かりやすいように、詳細なコメントを付けています。
34 */
35function demonstrateIsNumericExamples(): void
36{
37    echo "--- PHP is_numeric() 関数のデモンストレーション ---" . PHP_EOL . PHP_EOL;
38
39    echo "--- 数値として認識されるケース ---" . PHP_EOL;
40    // 整数値は数値として認識されます。
41    demonstrateIsNumericCase(123, '整数');
42    // 負の整数値も数値として認識されます。
43    demonstrateIsNumericCase(-45, '負の整数');
44    // 浮動小数点数(小数)は数値として認識されます。
45    demonstrateIsNumericCase(3.14, '浮動小数点数 (小数)');
46    // 負の浮動小数点数も数値として認識されます。
47    demonstrateIsNumericCase(-0.5, '負の浮動小数点数');
48    // 指数表記の数値(例: 1.2e3 は 1200 を意味します)も数値として認識されます。
49    demonstrateIsNumericCase(1.2e3, '指数表記の浮動小数点数');
50    
51    // 整数のみの文字列は数値として認識されます。
52    demonstrateIsNumericCase('456', '整数値の文字列');
53    // 小数点を含む文字列も数値として認識されます。
54    demonstrateIsNumericCase('78.9', '浮動小数点数値の文字列 (小数)');
55    // 負の小数点を含む文字列も数値として認識されます。
56    demonstrateIsNumericCase('-10.25', '負の浮動小数点数値の文字列');
57    // 指数表記の数値を含む文字列も数値として認識されます。
58    demonstrateIsNumericCase('1.2e-3', '指数表記の数値文字列');
59
60    echo PHP_EOL . "--- 数値として認識されないケース ---" . PHP_EOL;
61    // 空文字列は数値として認識されません。
62    demonstrateIsNumericCase('', '空文字列');
63    // 数値以外の文字を含む文字列は数値として認識されません。
64    demonstrateIsNumericCase('hello world', '非数値文字列');
65    // 数字と文字が混在する文字列(例: '123a')は数値として認識されません。
66    demonstrateIsNumericCase('123a', '数値と文字が混在する文字列');
67    // null値は数値として認識されません。
68    demonstrateIsNumericCase(null, 'null値');
69    // 真偽値(true, false)は数値として認識されません。
70    demonstrateIsNumericCase(true, '真偽値 (true)');
71    demonstrateIsNumericCase(false, '真偽値 (false)');
72    // 配列は数値として認識されません。
73    demonstrateIsNumericCase([], '空の配列');
74    // オブジェクトは数値として認識されません。
75    demonstrateIsNumericCase(new stdClass(), 'オブジェクト');
76}
77
78// is_numeric関数のデモンストレーションを実行します。
79demonstrateIsNumericExamples();
80

PHPのis_numeric関数は、与えられた値が数値であるか、または数値として解釈できる形式の文字列であるかを判断する際に使用します。引数にはあらゆる型の値(mixed $value)を指定でき、その値が数値とみなせる場合には論理値trueを、そうでない場合にはfalseを戻り値(bool)として返します。

このサンプルコードは、is_numeric関数が様々なデータ型をどのように判定するかを具体的に示しています。特に、整数値だけでなく、3.14のような浮動小数点数(小数)や、'78.9'のように小数を含む数値形式の文字列、さらには指数表記の数値やその文字列表現も数値として正しく認識され、trueを返す挙動が確認できます。

一方で、空文字列、'hello world'のような数値以外の文字を含む文字列、'123a'のように数字と文字が混在する文字列は数値とはみなされず、falseを返します。また、null値、truefalseといった真偽値、配列、オブジェクトなども数値とは判定されず、同様にfalseが返されます。これらの具体的な例を通じて、is_numeric関数の正確な挙動を理解し、システム開発での入力値検証などに役立てることができます。

PHPのis_numeric関数は、整数や小数、指数表記といった数値型に加えて、それらを表現する「数値文字列」(例: '123', '3.14', '1.2e3')も数値として認識しtrueを返します。このため、ユーザーからの入力値など、文字列型として渡された値が数値と判定されることに注意が必要です。一方、空文字列、数値以外の文字が混ざる文字列(例: '123a')、null、真偽値、配列、オブジェクトはfalseとなります。厳密に「データ型としての整数型」や「浮動小数点数型」かを判定したい場合は、is_int()is_float()関数、またはfilter_var関数などのより厳密なバリデーション方法を検討することをお勧めします。数値として計算に利用する文字列は、事前に明示的な型キャストを行うと安全です。

関連コンテンツ

関連プログラミング言語