今天有一个简单的需求,我以 $_GET["str"] 的方式来接受一个传过来的参数,我需要判断一个这个变量是否是整数?而且还要是正整数。
不用说,大家都知道,$_GET接受传过来的参数都是“字符串”类型。我们就以此为前提往下继续分析!
整个思路分两种情况走,如下:
1、如果你确定你的变量是数字,php有内置的判断函数:is_int 检测变量是否是整数;
2、但是,有时候往往我们接收到的变量是数字或数字字符串(如表单输入,它们通常为字符串),这样我们就不能用 is_int()函数来简单判断是否为整数,我们需要用到 is_numeric()和strpos()函数来判断是否为整数。
最初,我是想准备用 is_int() 函数的,结果查手册并测试了一下,不能满足我的需求。
is_int() 函数用于检测变量是否是整数。
注意:若想测试一个变量是否是数字或数字字符串(如表单输入,传参,参数接受.....它们通常为字符串),必须使用 is_numeric()。
var_dump(is_int(23)); //bool(true)
var_dump(is_int("23")); //bool(false)
var_dump(is_int(23.5)); //bool(false)
var_dump(is_int(NULL)); //bool(false)
var_dump(is_int("")); //bool(false)
最后,当我用 is_numeric() 函数的时候,当我把 $_GET["str"] 赋值为一个小数的时候,is_numeric 直接认为它是一个数字了。很明显,这肯定也不是我想要的。
is_numeric() 函数用于检测变量是否为数字或数字字符串。
$_GET["str"] = 2.2;
var_dump(is_numeric($_GET["str"])); //bool(true)
最终,我找到了PHP判断变量是否是整数的?最正确的方法,具体如下:
思路:
1、用 is_numeric() 函数判断是否为数字或数字字符串;
2、用 strpos() 函数判断数字中是否含有小数点;
示例代码:
if((is_numeric($str)) && (strpos($str,".") == false)){
echo "是整数";
}else{
echo "不是整数";
}
或者
if(!is_numeric($str) || strpos($str,".")!==false){
echo "不是整数";
}else{
echo "是整数";
2020年10月11日 19:40:38 沙发
今天我正好遇到了PHP需要判断“id正整数、id整数”这个值,果然帮助到了我!