PHPで数値チェックの判定が出来る5つの関数

2020年1月27日

PHPで、数値かどうかを判定する関数についてまとめました。

各種の関数毎に微妙に仕様が違うので、用途にあった関数があるかをチェックしましょう。

is_int 整数かつ数値型のみtrue

is_int()関数は、「整数」かつ「数値型」のみtrueを返す関数です。

12345 ○(true)
‘12345’ ×(false)
123.45 ×(false)
‘123.45’ ×(false)
サンプルコード
echo '整数(数値型)';
if(is_int(12345)){
    echo 'true<br>';
}else{
    echo 'false<br>';
}

echo '整数(文字型)';
if(is_int('12345')){
    echo 'true<br>';
}else{
    echo 'false<br>';
}

echo '少数(数値型)';
if(is_int(123.45)){
    echo 'true<br>';
}else{
    echo 'false<br>';
}

echo '少数(文字型)';
if(is_int('123.45')){
    echo 'true<br>';
}else{
    echo 'false<br>';
}
整数(数値型)true
整数(文字型)false
少数(数値型)false
少数(文字型)false

is_float() 浮動小数かつ数値型のみtrue

is_float()関数は、「浮動小数」かつ「数値型」のみtrueを返す関数です。

12345 ×(false)
‘12345’ ×(false)
123.45 ○(true)
‘123.45’ ×(false)
サンプルコード
echo '整数(数値型)';
if(is_float(12345)){
    echo 'true<br>';
}else{
    echo 'false<br>';
}

echo '整数(文字型)';
if(is_float('12345')){
    echo 'true<br>';
}else{
    echo 'false<br>';
}

echo '少数(数値型)';
if(is_float(123.45)){
    echo 'true<br>';
}else{
    echo 'false<br>';
}

echo '少数(文字型)';
if(is_float('123.45')){
    echo 'true<br>';
}else{
    echo 'false<br>';
}
整数(数値型)false
整数(文字型)false
少数(数値型)true
少数(文字型)false

is_numeric() 文字型数値型問わず、数字表現ならtrue

is_numeric()関数は、値が文字型か数値型か問わず、数値の形を成していたらtrueを返す関数です。

型に縛られず判定を行いたい場合に便利です。

12345 ○(true)
‘12345’ ○(true)
123.45 ○(true)
‘123.45’ ○(true)
サンプルコード
echo '整数(数値型)';
if(is_numeric(12345)){
    echo 'true<br>';
}else{
    echo 'false<br>';
}

echo '整数(文字型)';
if(is_numeric('12345')){
    echo 'true<br>';
}else{
    echo 'false<br>';
}

echo '少数(数値型)';
if(is_numeric(123.45)){
    echo 'true<br>';
}else{
    echo 'false<br>';
}

echo '少数(文字型)';
if(is_numeric('123.45')){
    echo 'true<br>';
}else{
    echo 'false<br>';
}
整数(数値型)true
整数(文字型)true
少数(数値型)true
少数(文字型)true

ctype_digit() 文字型と整数値の場合true(例外有)

ctype_digit()関数は、文字型の整数値の場合にtrueを返す関数です。

12345 ○(true)
‘12345’ ○(true)
123.45 ×(false)
‘123.45’ ×(false)

この関数は、数値型を入れた場合、値によって判定が異なる(256以上ならtrueを返す)という特殊な仕様があります。
そのため、引数に数値型が入る場合、判定に使用するのはオススメしません。

100 ×(false)
200 ×(false)
300 ○(true)
400 ○(true)
500 ○(true)
サンプルコード
echo '整数(数値型)';
if(ctype_digit(12345)){
    echo 'true<br>';
}else{
    echo 'false<br>';
}

echo '整数(文字型)';
if(ctype_digit('12345')){
    echo 'true<br>';
}else{
    echo 'false<br>';
}

echo '少数(数値型)';
if(ctype_digit(123.45)){
    echo 'true<br>';
}else{
    echo 'false<br>';
}

echo '少数(文字型)';
if(ctype_digit('123.45')){
    echo 'true<br>';
}else{
    echo 'false<br>';
}
整数(数値型)true
整数(文字型)true
少数(数値型)false
少数(文字型)false

preg_match() 正規表現で数値判定を行う方法

preg_match()による正規表現でも、数値の判定を行うことが出来ます。

参考 【PHP】正規表現チェッカー

今回紹介する例「preg_match("/^[0-9]+$/", $var)」は、文字型か数値型か問わず、整数の場合はtrueを返す処理となっています。

12345 ○(true)
‘12345’ ○(true)
123.45 ×(false)
‘123.45’ ×(false)
サンプルコード
echo '整数(数値型)';
if(preg_match("/^[0-9]+$/", (12345))){
    echo 'true<br>';
}else{
    echo 'false<br>';
}

echo '整数(文字型)';
if(preg_match("/^[0-9]+$/", ('12345'))){
    echo 'true<br>';
}else{
    echo 'false<br>';
}

echo '少数(数値型)';
if(preg_match("/^[0-9]+$/", (123.45))){
    echo 'true<br>';
}else{
    echo 'false<br>';
}

echo '少数(文字型)';
if(preg_match("/^[0-9]+$/", ('123.45'))){
    echo 'true<br>';
}else{
    echo 'false<br>';
}
整数(数値型)true
整数(文字型)true
少数(数値型)false
少数(文字型)false

まとめ

12345 ‘12345’ 123.45 ‘123.45’
is_int × × ×
is_float × × ×
is_numeric
ctype_digit × ×
preg_match("/^[0-9]+$/", $var) × ×

関数毎の、数値判定の仕様を理解して、サイトにあった関数を活用していきましょう。

以上、PHPで数値チェックの判定が出来る5つの関数、でした。

PHP