✨
中級者向け:数の判定について
is_int() 整数を判定する
-
int
はinteger
の略 - 整数を判定する
- 整数ならtrue、少数ならfalse、もちろん負数もtrue
- 文字列型は整数でもfalse ← 重要❗
var_dump( is_int(0) ); // true
var_dump( is_int(1) ); // true
var_dump( is_int(-1) ); // true
var_dump( is_int('1') ); // false
var_dump( is_int(1.1) ); // false
文字列型は全てfalseになることに注意すること。(C言語のint型の判定と同等)
通常のフォームによるPOSTとGETメソッドの送信では、全て文字列型になる。
データベースから取得した値や、JSONで送信された値、プログラム内で初期化した変数の判定に使う。
is_numeric() 一般的な数値を判定する(数値型ではない)
- 整数はtrue
- 少数もtrue
- 文字列型の分数や指数はfalse
var_dump( is_numeric(0) ); // true
var_dump( is_numeric(-1) ); // true
var_dump( is_numeric('0') ); // true
var_dump( is_numeric(1.0) ); // true
var_dump( is_numeric('a') ); // false
悩むケース:正の整数で、少数ではない数
GETやPOSTで送信されてきた値(文字列型)で、「正の整数で少数ではない数」を求める時に悩みます。
これは組み合わせて判定します。
foreach( [1, '1', '0', 0.1, -1] as $n ){
var_dump( is_numeric($n) and !is_float($n) and $n > 0 );
}
正規表現で求めることもできます
foreach( [1, '1', '0', 0.1, -1] as $n ){
var_dump( preg_match('/^[0-9]+$/', $n) and $n );
}
Discussion