我正在编写PHP代码来验证用户输入的一些数据,其中一个是整数,我曾经$_REQUEST["age"]得到它,当我检查这个值是否为整数时gettype($_REQUEST["age"] == "integer",is_int($_REQUEST["age"])两者都给我假,但是当我使用时is_numeric($_REQUEST["age"])是给出我是真的.我想检查参数的值是否是整数,我是正确使用前2个函数还是我遗漏了什么?
Thakns
注意:我试图输出gettype($_REQUEST["age"])它给我string
精简版:
使用 ctype_digit($_REQUEST['age'])
长版:
正如您在使用时发现的那样,您的问题gettype是$_REQUEST返回一个字符串.即使该字符串是一个整数语义,喜欢16,它仍然是一个字符串类型,而不是整型变量.你从两个测试得到不同的结果,因为他们测试不同的东西:
is_numeric根据PHP文档测试字符串是否包含"可选符号,任意数量的数字,可选的小数部分和可选的指数部分" .在您的情况下,字符串仅包含数字,因此测试返回True.is_int测试变量的类型是否为整数 - 它不会是,因为它是由它返回的$_REQUEST.这就是is_numeric返回True时is_int返回的原因False:字符串只包含数字(因此"是数字")但技术上仍然是字符串类型,而不是整数类型(因此"不是int").当然,is_numeric对于整数测试来说还不够,因为True如果字符串有小数或使用科学记数法,它将返回,即数字但不是整数.
要测试是否$_REQUEST为整数,无论技术类型如何,您都可以测试字符串中的所有字符是否为数字(因此字符串整数是整数).为此你可以使用ctype_digit:
ctype_digit($_REQUEST['age'])
Run Code Online (Sandbox Code Playgroud)
这将返回True的16而不是16.5或16e0-淘汰从数字非整数的整数.
| 归档时间: |
|
| 查看次数: |
460 次 |
| 最近记录: |