is_numeric()与is_float()对比is_int()

时间:2011-11-29 07:11:22

标签: php types numbers

我的理解是......

如果is_numeric($input) === true

然后

is_float($input) === true

is_int($input) === true

$input === 0

$input是一个数字字符串(意思是如果它没有用引号括起来,它会满足前3个中的一个)。

这是准确的吗?还有其他差异吗?

2 个答案:

答案 0 :(得分:29)

请参阅is_numeric上的PHP文档。它讨论了允许的所有内容,而且不仅仅是is_floatis_int


同样重要的是要注意is_int仅适用于整数类型的事物,这意味着不允许字符串表示。验证表单输入是整数时,这是一个常见问题。您应该使用过滤器系列中的filter_var或其他内容与过滤器FILTER_VALIDATE_INT一起使用。对于花车,请使用FILTER_VALIDATE_FLOAT


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

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

PHP 7有两种不同的转换为int的模式; this answer解释了一下。

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

答案 1 :(得分:3)

请参阅docs。数值可以是:

  • 整数
  • 一个浮动
  • 指数
  • 正十六进制
  • 包含大部分
  • 的字符串