is_int和GET或POST

use*_*854 13 php

为什么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('47.11e5')` 返回true。即 is_numeric() 不仅测试十进制表示中的整数。 (2认同)