PHPで数字かどうかチェックしようと調べてみたら、

bool is_numeric ( mixed var )
bool is_int ( mixed var )
bool ctype_digit ( string text )

と似たような関数が3つも見つかった。

違いは、
is_numericは引数が数字数値文字列
is_intは引数が数値型
ctype_digitは数値文字列かどうか(”0″から”9″の連なる文字列)

なので

is_numericは10でも”10″でもtrue
is_intは10はtrueだが”10″はfalse、つまり$_POSTされた数字はfalse
ctype_digitは10はfalseだが、”10″はtrue

ということになる。
注意しなければならないのはctype_digitは”0.1″がfalseになるということだ。

ということで、型を意識せず数値かどうかチェックしたい場合、is_numeric
数値演算で型が厳密に数値型かどうか調べたい場合、is_int
“0″から”9″の文字で形成された文字列かチェックしたい場合、ctype_digit(用途があまり見当たらない・・・)

普通に使う場合はis_numericが無難のように感じた。

タグ: