php中is_int就是一个坑,建议用正则表达式替代。
看看下面几个算式,你知道正确答案吗?
$aaaa=442;
$bbbb=’442′;
var_dump(is_int(442));
echo'<br>’;
var_dump(is_int(4.42));
echo'<br>’;
var_dump(is_int(‘442’));
echo'<br>’;
var_dump(is_int(‘4.42’));
echo'<br>’;
var_dump(is_int($aaaa));
echo'<br>’;
var_dump(is_int($bbbb));
差别就是,在验证之前,该类型是不是数字。理论上数字 字符串 应该转化为数字,返回true,答案如下:
看到了吗?
只有在判断函数的值确切为数字的时候,才能发挥true;而在实际编程中,表单传递时,大部分情况下,变量都不小心加上了引号,调试中的错误,就非常难以发现了。今天丘孔语论废了四个小时才找打问题所在,只好用正则表达式搞定了。
看看正则表达式的解决方案:
$aaaa=442;
$bbbb=’442′;
var_dump(preg_match(‘/^\d+$/’,442));
echo'<br>’;
var_dump(preg_match(‘/^\d+$/’,4.42));
echo'<br>’;
var_dump(preg_match(‘/^\d+$/’,’442′));
echo'<br>’;
var_dump(preg_match(‘/^\d+$/’,’4.42′));
echo'<br>’;
var_dump(preg_match(‘/^\d+$/’,$aaaa));
echo'<br>’;
var_dump(preg_match(‘/^\d+$/’,$bbbb));
让我们看看输出结果,这才是我们再判断中大部分情况下想要的结果:
希望我的分享能够解决你正好遇到的问题。
更多交流加我微信公众号:丘孔语论 或者头条号:天天济南
转载请保留上面信息。