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

rya*_*nve 14 php types numbers

我的理解是......

如果 is_numeric($input) === true

那么

is_float($input) === true 要么

is_int($input) === true 要么

$input === 0 要么

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

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

Lev*_*son 32

请参阅有关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
}
Run Code Online (Sandbox Code Playgroud)

PHP 7有两种不同的转换为int的模式; 这个答案解释了一下.

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