ユーザーが入力したデータの 1 つが整数であることを検証するための PHP コードを作成しています。 を使用する場合は、
$_REQUEST["age"] を使用してデータを取得します。 gettype($ _REQUEST["age"]) == "integer"
と is_int($_REQUEST["age"])
は両方とも、この値が整数かどうかをチェックするときに false を返しますが、 use is_numeric($_REQUEST["age"])
の場合に true を返します。パラメータの値が整数であるかどうか、最初の 2 つの関数を正しく使用しているか、それとも何かが不足しているかを確認したいと考えています。
注:
gettype($_REQUEST["age"]) を出力しようとしましたが、string
が返されました。
P粉1077720152023-09-22 09:25:38
######短縮版: ######
使用 ctype_digit($_REQUEST['age'])
詳細バージョン:
あなたの問題は、gettype を使用すると、
$_REQUEST が string
を返すことです。文字列が意味的に整数 (16
など) であっても、それは依然として文字列型であり、整数型変数ではありません。これら 2 つのテストで異なる結果が得られる理由は、テストする内容が異なるためです。
is_numeric
True
を返します。
is_int
変数の型が整数かどうかをテストします。ただし、
これが、
is_numeric を返し、is_int
が False
を返す理由です。文字列には数字のみが含まれます (つまり、「数値」)。ただし、技術的には依然として文字列型であり、整数型ではありません (つまり、「int」ではありません)。もちろん、is_numeric
は整数のテストには十分ではありません。文字列に小数が含まれている場合、または科学表記法が使用されている場合は、整数ではなく数値である True
が返されるからです。
$_REQUEST
が整数であるかどうかをテストするには、技術的な種類に関係なく、文字列内のすべての文字が数字である (つまり、文字列全体が整数である) かどうかをテストできます。これには、
: を使用できます。
リーリー
これは、16 に対して
を返しますが、16.5
または 16e0
に対しては True
を返しません - 次のように整数以外の数値から整数をフィルタリングできます。