【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()関数を使用し、目的に応じて使い分けることが重要です。ユーザーからの入力を検証する際は、より安全なバリデーション関数も検討することをお勧めします。

関連コンテンツ