为什么is_int在以下情况下总是返回false?
echo $_GET['id']; //3
if(is_int($_GET['id']))
echo 'int'; //not executed
Run Code Online (Sandbox Code Playgroud)
Pek*_*ica 39
为什么is_int总是返回false?
因为$_GET["id"]是一个字符串,即使它恰好包含一个数字.
你的选择:
使用过滤器扩展.filter_input(INPUT_GET, "id", FILTER_VALIDATE_INT)如果变量存在,则返回整数类型变量,不是数组,表示整数,并且该整数在有效范围内.否则它会返回false.
强制将其转换为整数(int)$_GET["id"]- 可能不是你想要的,因为你无法正确处理错误(即"id"不是数字)
用于ctype_digit()确保字符串仅由数字组成,因此是一个整数 - 从技术上讲,这true也返回超出int范围的非常大的数字,但我怀疑这将是一个问题.但请注意,此方法无法识别负数.
不使用:
is_numeric() 因为它也会识别浮动值(1.23132)