フォームから変数を取得する:
<form method = 'POST' action = ''>
<input type = 'text' name = 'a' size = '1' >
<input type = 'submit' value = 'Find it'>
</form>"
1を入力してgettype($ POST _ ['a'])を使用すると、文字列が返されます。intを入力することはできますか?この後、その変数がintかどうかを確認したいからです。
[〜#〜]更新[〜#〜]
常に文字列を返し、(int)またはintval()を使用するように言われましたが、実際に 'a'のような文字列の場合、0を返しますが、整数値0の場合もあるので、この問題を解決するにはどうすればよいですか?
[〜#〜]更新[〜#〜]
タイプミスを編集した後、Brad Christieはis_numericを使用して最善の方法を提案しました
// convert the $_POST['a'] to integer if it's valid, or default to 0
$int = (is_numeric($_POST['a']) ? (int)$_POST['a'] : 0);
is_numeric を使用して確認できます。また、phpでは integer タイプへのキャストも可能です。
実際の比較では、 is_int を実行できます。
更新
バージョン5.2には filter_input
これは、このデータタイプ(およびその他のデータタイプ)に対してもう少し堅牢かもしれません。
$int = filter_input(INPUT_POST, 'a', FILTER_VALIDATE_INT);
私が選んだ FILTER_VALIDATE_INT
、ただしFILTER_SANITIZE_NUMBER_INT
と もっとたくさん -それはあなたが何をしたいかによります。
HTTP経由でネットワーク経由で送信する場合、すべては文字列です。 「1」を1
にするかどうかは、サーバーが決定します。
いいえ。HTTPはテキスト(またはバイナリ)のみを扱います。
変換する必要があります。
(int)$_POST['a']
を使用して整数に変換します。
幅広いタイプの互換性を維持し、int(double、float、ecc。)以外の入力タイプを保持したい場合は、次のようなものをお勧めします。
$var = is_numeric($_POST['a'])?$_POST['a']*1:$_POST['a'];
あなたは得るでしょう:
$_POST['a'] = "abc"; // string(3) "abc"
$_POST['a'] = "10"; // int(10)
$_POST['a'] = "10.12"; // float(10.12)