2012-07-09 125 views
0

我被一个形式和PHP文件使用var_dump(is_int($my_var));发布的数值,但它返回bool(false)虽然我张贴,如果我用var_dump(is_int(1));它是罚款,并返回bool(true) 什么是错的。 ...?PHP:is_int返回错误的结果

+0

var_dump($ my_var);'return? – Bjoern 2012-07-09 12:04:04

+0

检查$ my_var类型,如果is_int($ my_var)返回false,则$ my_var必须不是整数 – Ben 2012-07-09 12:04:59

+0

如果您的变量'$ my_var'包含表单的输入(如您的第一句话所示),它将包含键入字符串 - php不会自动转换表单数据。 – codeling 2012-07-09 12:05:32

回答

7

通过POST请求传输的变量是字符串,所以您在返回false的字符串上调用is_int()

您可以使用is_numeric()filter_var()来替代或者简单地将您的变量转换为整数。

+0

感谢您指出我的错误... – 2012-07-09 12:25:20

0
// First check if it's a numeric value as either a string or number 
    if(is_numeric($int) === TRUE){ 

     // It's a number, but it has to be an integer 
     if((int)$int == $int){ 

      return TRUE; 

     // It's a number, but not an integer, so we fail 
     }else{ 

      return FALSE; 
     } 

    // Not a number 
    }else{ 

     return FALSE; 
    } 

而且,不但得不到变量

$my_var = $_POST["value"]; 

试试这个,而不是看是否值真的过去了。

$my_var = $_REQUEST["value"]; 
+0

您可以将整个代码片段缩减为'return(int)$ int == $ int;' – KingCrunch 2012-07-09 12:22:46