检测变量是否是数字或数字字符串

# 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() - 检测变量是否是布尔值
- is_null() - 检测变量是否是 null
- is_float() - 检测变量是否是浮点型
- is_int() - 检测变量是否是整数
- is_string() - 检测变量的类型是否是字符串
- is_object() - 检测变量是否是对象
- is_array() - 检测变量是否是数组
- filter_var() - 使用特定的过滤器过滤一个变量

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