PHPで数値チェックの判定が出来る5つの関数
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
整数(文字型)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
整数(文字型)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
整数(文字型)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
整数(文字型)true
少数(数値型)false
少数(文字型)false
preg_match() 正規表現で数値判定を行う方法
preg_match()による正規表現でも、数値の判定を行うことが出来ます。
今回紹介する例「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
整数(文字型)true
少数(数値型)false
少数(文字型)false
まとめ
12345 | ‘12345’ | 123.45 | ‘123.45’ | |
---|---|---|---|---|
is_int | ○ | × | × | × |
is_float | × | × | ○ | × |
is_numeric | ○ | ○ | ○ | ○ |
ctype_digit | △ | ○ | × | × |
preg_match("/^[0-9]+$/", $var) | ○ | ○ | × | × |
関数毎の、数値判定の仕様を理解して、サイトにあった関数を活用していきましょう。
以上、PHPで数値チェックの判定が出来る5つの関数、でした。
ディスカッション
コメント一覧
まだ、コメントがありません