is_numeric() 与 is_float() 与 is_int()

2022-08-30 23:06:44

我的理解是...

如果is_numeric($input) === true

然后

is_float($input) === true

is_int($input) === true

$input === 0

$input是一个数字字符串(这意味着如果它没有用引号括起来,它将满足前 3 个字符串之一)。

这是准确的吗?还有其他区别吗?


答案 1

请参阅 PHP 关于 is_numeric 的文档。它谈论了允许的所有内容,并且它不仅仅是 和 。is_floatis_int


同样重要的是要注意,仅适用于整数类型的事物,这意味着不允许使用字符串表示。在验证表单输入是否为整数时,这是一个常见问题。您应该使用过滤器系列中的东西与过滤器。对于浮点数,请使用 。is_intfilter_varFILTER_VALIDATE_INTFILTER_VALIDATE_FLOAT


此外,如果您尝试检查整数的原因是将参数验证为int,那么在PHP 7中,您可以这样做:

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

PHP 7 有两种不同的模式用于转换为 int;这个答案可以解释得更多一些。

请注意,如果要验证表单元素的内容,这可能不是您想要的。为此,请使用解决方案。filter_var


答案 2

请参阅文档。数值可以是:

  • 整数
  • 浮子
  • 指数
  • 正十六进制
  • 包含其中大多数的字符串

推荐