2013-05-29 108 views
0

我不明白为什么filter_var(true, FILTER_VALIDATE_INT)返回1为什么filter_var(真,FILTER_VALIDATE_INT)返回1

它应该返回因为真正的不整数

+1

您如何期望我们在不知道您作为'$ variable'传递的情况下回答这个问题? – ceejayoz

+1

为什么你不使用内置函数'is_int'这个? –

+2

'filter_var(真,FILTER_VALIDATE_INT)''返回1',不'TRUE'。 [小提琴](http://3v4l.org/5ujT9) –

回答

4

原因的说法之一就是类型的混合,所以当你给一个bool它丢在INT所以返回1,您可以测试使用的var_dump

0

这可能是因为你没有传递一个整数。

看看这个:

var_dump(isInt(1)); // bool(true) 
var_dump(isInt("1")); // bool(true) 
var_dump(isInt("str")); // bool(false) 
var_dump(isInt(array(1))); // bool(false) 

功能是:与var_dump

function isInt($variable){ 
if (filter_var($variable, FILTER_VALIDATE_INT) !== false) { 
    return true; 
} 
return false; 
} 
1

尝试测试...

var_dump(filter_var(true, FILTER_VALIDATE_INT)); 
// this returns int(1) 

DEMO