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つの関数、でした。

ディスカッション
コメント一覧
まだ、コメントがありません