is_numeric

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

説明

bool is_numeric(mixed $value)

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

パラメータ

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

参考