PHPでは他の言語同様基本的な型が存在します。
例えばその基本型の例をあげると次の通り
- 整数型(int)
- 浮動小数点数型(float)
- 文字列型(string)
- 真偽値型(boolean)
- 配列型(array)
ここではデータに対してこのような型チェックを行う方法をまとめてみました。
整数型(int)のチェック
整数型チェックには is_int関数 を使用します。返り値は整数なら true 、それ以外なら false です。
例えば次が is_int を使った型チェックのコード例
1 2 3 4 5 |
var_export( is_int( 100 ) ); /// => true var_export( is_int( 'one' ) ); /// => false |
上コードのように 100 とか 200 みたいな整数の場合だけ true が返ってきます。
ちなみに次2つの関数は is_int のエイリアス(別名)です。
- is_integer
- is_long
使い方や返り値については is_int と全く同じように使えます。
ただし is_int関数 は '100' や "200" みたいに文字列としての数値は false を返すことに注意。
そういう文字列も含めたい場合は is_numeric関数 を使ったほうがいいです。
例えば次が is_numeric を使って型チェックを行うコード例
1 2 3 4 5 6 7 8 |
var_export( is_numeric( 100 ) ); /// => true var_export( is_numeric( '100' ) ); /// => true var_export( is_numeric( 'XXX' ) ); /// => false |
このコード例のように 100 はもちろん、 '100' みたいな文字列でも true が返ってきます。なのでフォームなどから入力された文字列を数値判定する場合に便利
浮動小数点数型(float)のチェック
3.14とかの浮動小数点数の型チェックは is_float関数 を使うのがベスト。返り値は渡したデータがfloat型なら true 、それ以外なら false が返ってきます。
例えば次が is_float を使った型チェックの例
1 2 3 4 5 6 7 8 |
var_export( is_float( 3.14 ) ); /// => true var_export( is_float( 1000 ) ); /// => false var_export( is_float( '10' ) ); /// => false |
上コードを見ても分かるように 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 が返ってきます。
例えば次が文字列型チェックの例
1 2 3 4 5 6 7 8 9 10 11 |
var_export( is_string( 'hello' ) ); /// => true var_export( is_string( "" ) ); /// => true var_export( is_string( '77' . 7 ) ); /// => true var_export( is_string( '77' + 7 ) ); /// => false |
少し注意が必要なのが文字列を結合させた場合ですね。
上コードのように '77' . 7 みたいにドット( . )を使って結合したものは文字列、 '77' + 7 みたいにプラス( + )を使って結合したデータは数値として扱われます。
もし is_string で数値と文字列を結合させたデータをチェックする場合は要注意です。
真偽値型(bool)のチェック
真偽値型のチェックには is_bool関数 が使えます。返り値は渡したデータが真偽値なら true 、それ以外なら false を返してきます。ただしPHPでの真偽値は大文字や小文字は区別されません。
例えば次が真偽値の型チェックを行っているコード例
1 2 3 4 5 6 7 8 9 10 11 |
var_export( is_bool( TRUE ) ); /// => true var_export( is_bool( False ) ); /// => true var_export( is_bool( null ) ); /// => false var_export( is_bool( 0 ) ); /// => false |
true や FLASE はもちろん、 大文字・小文字が入り混じった True とか False も真偽値と判定されます。
ただし true または false 以外は厳密な真偽値ではないので、 null や 0 などゆるい比較で false 扱いされるものでも真偽値とは評価されません。
配列型(array)のチェック
配列のチェックには is_array関数 を使えます。返り値はデータが配列(array)なら true 、それ以外なら false を返してきます。
例えば次が is_array を使った型チェックの例
1 2 3 4 5 6 7 8 9 10 11 |
var_export( is_array( array( 1, 2, 3 ) ) ); /// => true var_export( is_array( [ 'x' => 123 ] ) ); /// => true var_export( is_array( 3.141519 ) ); /// => false var_export( is_array( 'not array' ) ); /// => false |
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でデータ型をチェックする方法についてでした。