変数が数字または数値形式の文字列であるかを調べる

# is_numeric

(PHP 4, PHP 5, PHP 7, PHP 8)

is_numeric — 変数が数字または数値形式の文字列であるかを調べる

### 説明

function is_numeric(mixed `$value`): bool

指定した変数が数値または 数値形式の文字列であるかどうかを調べます。

### パラメータ

`value`

  評価する変数。

### 戻り値

`value` が数値または 数値形式の文字列 である場合に `true`、それ以外の場合に `false` を返します。

### 変更履歴

バージョン | 説明
--- | ---
8.0.0 | 空白文字で終わる数値形式の文字列 (`"42 "`) に対して、この関数は `true` を返すようになりました。 これより前のバージョンでは、`false` を返していました。

### 例

例1 is_numeric() の例

    <?php
    $tests = array(
        "42",
        1337,
        0x539,
        02471,
        0b10100111001,
        1337e0,
        "0x539",
        "02471",
        "0b10100111001",
        "1337e0",
        "not numeric",
        array(),
        9.1,
        null,
        '',
    );

    foreach ($tests as $element) {
        if (is_numeric($element)) {
            echo var_export($element, true) . " is numeric", PHP_EOL;
        } else {
            echo var_export($element, true) . " is NOT numeric", PHP_EOL;
        }
    }
    ?>

上の例の出力は以下となります。

    '42' is numeric
    1337 is numeric
    1337 is numeric
    1337 is numeric
    1337 is numeric
    1337.0 is numeric
    '0x539' is NOT numeric
    '02471' is numeric
    '0b10100111001' is NOT numeric
    '1337e0' is numeric
    'not numeric' is NOT numeric
    array (
    ) is NOT numeric
    9.1 is numeric
    NULL is NOT numeric
    '' is NOT numeric

例2 空白文字と is_numeric() 関数

    <?php
    $tests = [
        " 42",
        "42 ",
        "\u{A0}9001", // non-breaking space
        "9001\u{A0}", // non-breaking space
    ];

    foreach ($tests as $element) {
        if (is_numeric($element)) {
            echo var_export($element, true) . " is numeric", PHP_EOL;
        } else {
            echo var_export($element, true) . " is NOT numeric", PHP_EOL;
        }
    }
    ?>

上の例の PHP 8 での出力は、このようになります。:

    ' 42' is numeric
    '42 ' is numeric
    ' 9001' is NOT numeric
    '9001 ' is NOT numeric

上の例の PHP 7 での出力は、このようになります。

    ' 42' is numeric
    '42 ' is NOT numeric
    ' 9001' is NOT numeric
    '9001 ' is NOT numeric

### 参考

- 数値形式の文字列
- ctype_digit() - 数字かどうかを調べる
- is_bool() - 変数が boolean であるかを調べる
- is_null() - 変数が null かどうか調べる
- is_float() - 変数の型が float かどうか調べる
- is_int() - 変数が整数型かどうかを検査する
- is_string() - 変数の型が文字列かどうかを調べる
- is_object() - 変数がオブジェクトかどうかを検査する
- is_array() - 変数が配列かどうかを検査する
- filter_var() - 指定したフィルタでデータをフィルタリングする

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open