gpt4 book ai didi

php - PHP判断一个字符串是否由整数组成

转载 作者:可可西里 更新时间:2023-11-01 00:22:34 25 4
gpt4 key购买 nike

我正在编写 php 代码来验证用户输入的一些数据,其中一个是整数,我使用 $_REQUEST["age"] 来获取它,当我检查是否这个值是整数,gettype($_REQUEST["age"] == "integer"is_int($_REQUEST["age"]) 都给我错误,但是当我使用 is_numeric($_REQUEST["age"]) 时,它给出了 true。我想检查参数的值是否为整数,我是否正确使用了前 2 个函数,或者我错过了什么吗?

他肯斯

注意:我尝试输出 gettype($_REQUEST["age"]) 它给了我 string

最佳答案

简短版:

使用ctype_digit($_REQUEST['age'])

长版:

正如您在使用 gettype 时发现的那样,您的问题是 $_REQUEST 返回一个 string。即使该字符串在语义上是一个整数,如16,它仍然是一个字符串类型而不是一个整数类型变量。您从这两个测试中得到不同的结果,因为它们测试的是不同的东西:

  • is_numeric 根据 PHP docs 测试字符串是否包含“可选符号、任意位数、可选小数部分和可选指数部分” .在您的例子中,字符串只包含数字,因此测试返回 True
  • is_int 测试变量的类型是否为整数 - 它不会是整数,因为它由 $_REQUEST 返回。

这就是为什么 is_numeric 返回 Trueis_int 返回 False 的原因:字符串只包含数字(因此 "是数字”),但在技术上仍然是字符串类型,而不是整数类型(因此“不是整数”)。当然,is_numeric 不足以进行整数测试,因为如果字符串有小数或使用科学记数法,即是数字而不是整数,它将返回 True

要测试 $_REQUEST 是否为整数,无论​​技术类型如何,您可以测试字符串中的所有字符是否都是数字(因此整个字符串是一个整数)。为此,您可以使用 ctype_digit :

ctype_digit($_REQUEST['age'])

这将为 16 返回 True 但不会为 16.516e0 - 从中​​剔除整数数字非整数。

关于php - PHP判断一个字符串是否由整数组成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15448354/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com