PHPで数値・配列・文字列などの型チェックを行う方法まとめ

PHPでは他の言語同様基本的な型が存在します。

例えばその基本型の例をあげると次の通り

  • 整数型(int)
  • 浮動小数点数型(float)
  • 文字列型(string)
  • 真偽値型(boolean)
  • 配列型(array)

ここではデータに対してこのような型チェックを行う方法をまとめてみました。

整数型(int)のチェック

整数型チェックには is_int関数 を使用します。返り値は整数なら true  、それ以外なら false  です。

例えば次が is_int  を使った型チェックのコード例

上コードのように 100  とか 200  みたいな整数の場合だけ true  が返ってきます。

 

ちなみに次2つの関数は is_int  のエイリアス(別名)です。

  • is_integer
  • is_long

使い方や返り値については is_int  と全く同じように使えます。

 

ただし is_int関数  は '100'  や "200"  みたいに文字列としての数値は false  を返すことに注意。

そういう文字列も含めたい場合は is_numeric関数 を使ったほうがいいです。

例えば次が is_numeric  を使って型チェックを行うコード例

このコード例のように 100  はもちろん、 '100'  みたいな文字列でも true が返ってきます。なのでフォームなどから入力された文字列を数値判定する場合に便利

浮動小数点数型(float)のチェック

3.14とかの浮動小数点数の型チェックは is_float関数 を使うのがベスト。返り値は渡したデータがfloat型なら true  、それ以外なら false  が返ってきます。

例えば次が is_float  を使った型チェックの例

上コードを見ても分かるように 1000  とかの整数はfloat型と評価されない点に要注意

 

ちなみに次2つの関数は is_float  のエイリアス(別名)です。

  • is_double
  • is_real

この2つを使っても is_float  と同じ処理が可能

 

また '3.14'  とか "6.28"  とかの数値形式の文字列は false  になります。なのでフォームなどから受け取ったデータがfloat型かどうか判定するには使えません。

そういう場合は整数チェックと同じく is_numeric関数 を使うのが確実です。

文字列型(string)のチェック

文字列型のチェックは is_string関数 を使います。返り値は渡したデータが文字列なら true  、それ以外だと false  が返ってきます。

例えば次が文字列型チェックの例

少し注意が必要なのが文字列を結合させた場合ですね。

上コードのように '77' . 7  みたいにドット( . )を使って結合したものは文字列'77' + 7  みたいにプラス( + )を使って結合したデータは数値として扱われます。

もし is_string  で数値と文字列を結合させたデータをチェックする場合は要注意です。

真偽値型(bool)のチェック

真偽値型のチェックには is_bool関数 が使えます。返り値は渡したデータが真偽値なら true  、それ以外なら false  を返してきます。ただしPHPでの真偽値は大文字や小文字は区別されません

例えば次が真偽値の型チェックを行っているコード例

true  や FLASE  はもちろん、 大文字・小文字が入り混じった True  とか False  も真偽値と判定されます。

ただし true  または false  以外は厳密な真偽値ではないので、 null  や 0  などゆるい比較で false  扱いされるものでも真偽値とは評価されません。

配列型(array)のチェック

配列のチェックには is_array関数 を使えます。返り値はデータが配列(array)なら true  、それ以外なら false  を返してきます。

例えば次が is_array  を使った型チェックの例

PHPでは array  からでも、 []  からでも同じように配列を作成可能です。このどちらの方法を使ったとしても is_array  では配列判定されます。

ここまでのまとめ

ということで型チェックを行う方法まとめ

  • 整数(int)かチェックしたい場合
    データを is_int 関数 に渡して整数か判定可能
    ちなみに is_integer  または is_long  はこの関数のエイリアス
  • 浮動小数点数(float)かチェックしたい場合
    データを is_float関数 に渡してfloat型かどうか判定可能
    ちなみに is_double  または is_real  はこの関数のエイリアス
  • 文字列型(string)かチェックしたい場合
    データを is_string関数 に渡して文字列かどうか判定可能
  • 真偽値型(bool)かチェックしたい場合
    データを is_bool関数 に渡して真偽値かどうか判定可能
  • 配列型(array)かチェックしたい場合
    データを is_array関数 に渡すことで配列かどうか判定可能

以上PHPでデータ型をチェックする方法についてでした。