2011-11-29 5 views
8

私の理解では...IS_NUMERIC()対is_float()対is_int()

is_numeric($input) === true

、その後のいずれか

is_float($input) === true OR

is_int($input) === true OR

場合$input === 0または

$inputは数字の文字列です(引用符で囲まれていない場合は最初の3文字のいずれかを満たします)。

これは正確ですか?他の違いはありますか?

+2

この表の内容を読んでください:http://php.net/manual/en/language.types.phpおそらくこれはあなたが探しているものです。 –

+0

私は浮きが何であるかについて最も混乱していたと思います。私は浮動小数点であるものも数字であるが、それとは反対ではないことをとる。 – ryanve

答えて

24

を参照してくださいPHPのマニュアルのほとんどを含む文字列。許可されているすべてについて語りますが、それはis_floatis_int以上です。


それはis_intのみの文字列表現が許可されていないという意味、整数型をしているものに動作することに注意することも重要です。これは、フォーム入力が整数であることを確認する際によくある問題です。フィルターFILTER_VALIDATE_INTを使用して、filter_varまたはフィルターファミリーのものを使用する必要があります。浮動小数点数の場合は、FILTER_VALIDATE_FLOATを使用します。

また

、あなたが整数かどうかを確認しようとしている理由は、その後PHP 7で、あなたがこれを行うことができ、int型であるとしてパラメータを検証する場合:PHP 7は、2つを持っている

function foo(int $i) { 
    // $i is guaranteed to be an int (is_int) will be true 
} 

intに変換するための異なるモード。 this answerはもう少し説明します。

フォーム要素の内容を検証する場合、これはおそらく必要ではないことに注意してください。そのためにはfilter_varソリューションを使用してください。

+0

Thx - 'filter_var'についての良いヒント – ryanve

+0

あなたは関数を必要としません。それを整数にキャストすることができます:' $ n =(int)$ i' –

2

docsを参照してください。数値は指定できます

  • 整数
  • フロート
  • 指数
  • 正進
  • is_numeric上でこれらの
+0

Thx //指数表記は浮動小数点数に含まれています。あなたはヘックスについて正しいです - そうではないように見え、is_hex関数はありません。 – ryanve

+0

@ryanve PHP用ですが、通常は指数関数的(科学的)のfloatとは考えられません。 – fncomp