我的理解是......
如果is_numeric($input) === true
然后
is_float($input) === true
或
is_int($input) === true
或
$input === 0
或
$input
是一个数字字符串(意思是如果它没有用引号括起来,它会满足前3个中的一个)。
答案 0 :(得分:29)
请参阅is_numeric上的PHP文档。它讨论了允许的所有内容,而且不仅仅是is_float
和is_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。数值可以是: