定義と使い方
- PHPバージョン
- 4+
is_numeric()関数は、与えられた値が数値または数値形式の文字列であるかを確認します。引数として渡された値が数値または数値形式の文字列であればtrueを返し、そうでなければfalseを返します。
数値とは小数点のない整数型だけでなく、小数点のある浮動小数点数型もすべて「数値」です。
数値形式の文字列とはPHPにおいて数値として解釈できる整数型の文字列と浮動小数点数型の文字列もすべて「数値形式の文字列」です。
基本例
/* 整数(integer)型 */
var_dump(is_numeric(1)); // bool(true)
var_dump(is_numeric(0)); // bool(true)
var_dump(is_numeric(-10)); // bool(true)
/* 浮動小数点数(float) */
var_dump(is_numeric(1.0)); // bool(true)
var_dump(is_numeric(0.0)); // bool(true)
var_dump(is_numeric(3.14)); // bool(true)
/* 数値形式の文字列 */
var_dump(is_numeric('1')); // bool(true)
var_dump(is_numeric('0')); // bool(true)
var_dump(is_numeric('10.5')); // bool(true)
var_dump(is_numeric('123e2')); // bool(true)
/* 文字列 */
var_dump(is_numeric('hello')); // bool(false)
var_dump(is_numeric('abc123')); // bool(false)
/* 数値演算の結果 */
var_dump(is_numeric(1 + 1)); // bool(true)
var_dump(is_numeric(10 / 2)); // bool(true)
var_dump(is_numeric(9 / 2)); // bool(true)
/* 型キャスト(Type Casting、型変換) */
var_dump(is_numeric((float) '1')); // bool(true)
var_dump(is_numeric((int) '10.5')); // bool(true)
var_dump(is_numeric((string) 123)); // bool(true)
参考してください!gettype()関数は、与えられた値のデータ型を文字列として返します。
構文
is_numeric(mixed $value): bool
引数
$value |
必須。数値または数値形式の文字列であるかを確認する値です。 |
|---|
戻り値
引数として渡された値が数値または数値形式の文字列であればtrueを返し、そうでなければfalseを返します。
PHP 8.0.0 バージョン以降の変更事項
- PHP 8.0.0 バージョン以前は、数値の後に空白がある数値形式の文字列は、
is_numeric()関数によって数値として認識されませんでした。例えば、'35 'は空白文字が含まれているため、falseを返していました。 - PHP 8.0.0 バージョンからは、
trueを返すように変更されました。
var_dump(is_numeric('35 ')); // bool(false) => 数値の後に空白がある数値形式の文字列がある場合
var_dump(is_numeric(' 35')); // bool(true) => 数値の前に空白がある数値形式の文字列がある場合
var_dump(is_numeric('35 ')); // bool(true) => PHP 8.0.0 バージョンから true を返す
var_dump(is_numeric(' 35')); // bool(true) => PHP 8.0.0 バージョン以前も同様に true を返す
つまり、この変更事項は数値の後に空白がある文字列が is_numeric() 関数に渡された際、これを数値とみなして true を返すように許容するものです。
注意点
+ または - 符号が含まれた文字列は、is_numeric() 関数によって数値として認識されます。例えば、'+123' や '-456' は数値として認識されます。
var_dump(is_numeric('+123')); // bool(true)
var_dump(is_numeric('-456')); // bool(true)
文字列がすべて数字であるかを確認するには、ctype_digit()関数を使用してください。
ctype_digit()関数を使用
var_dump(ctype_digit('+123')); // bool(false)
var_dump(ctype_digit('-456')); // bool(false)
var_dump(ctype_digit('456')); // bool(true)
コードの補足説明ctype_digit()関数は、与えられた文字列が0から9までの数字のみで構成されているかを確認します。文字列がすべて数字で構成されていればtrueを返し、そうでなければfalseを返します。