检查正整数 (PHP) 的最佳方法?

2022-08-30 10:15:26

我需要检查表单输入值是否为正整数(而不仅仅是整数),我注意到另一个使用下面代码的代码片段:

$i = $user_input_value;
if (!is_numeric($i) || $i < 1 || $i != round($i)) {
  return TRUE;
}

我想知道使用上面的三个检查是否有任何好处,而不仅仅是做这样的事情:

$i = $user_input_value;
if (!is_int($i) && $i < 1) {
  return TRUE;
}

答案 1

不知道为什么没有建议在这方面使用filter_var。我知道这是一个老线程,但也许它会帮助某人(毕竟,我最终到达了这里,对吧?)。

$filter_options = array( 
    'options' => array( 'min_range' => 0) 
);


if( filter_var( $i, FILTER_VALIDATE_INT, $filter_options ) !== FALSE) {
   ...
}

您也可以添加最大值。

$filter_options = array(
    'options' => array( 'min_range' => 0,
                        'max_range' => 100 )
);

详细了解过滤器


答案 2

两个代码片段之间的区别在于,如果$i是数字字符串,则也返回 true,但如果$i是整数,则仅返回 true,如果$i是整数字符串,则不返回 true。这就是为什么如果你也想在$i是一个整数字符串时返回true(例如,如果$i == “19”而不是$i == 19),你应该使用第一个代码片段。is_numeric($i)is_int($i)

有关详细信息,请参阅以下参考资料:

php is_numeric 函数

php is_int 函数


推荐