php数据库 - is_int总是返回false

时间:2015-04-25 11:24:10

标签: php mysql if-statement integer

我编写了一个简单的SQL查询,而is_int()总是返回false。为什么呢?

mysql查询

$sql = "SELECT id, username FROM users WHERE email = 'mail@example.com' LIMIT 1"; 
$data = $db->query($sql); 
# output: php array like $data[0]['id'];

php if

if( is_int($data[0]['id'] ){
  print 1;
}else{
  print 0;
}

//编辑 var_dump打印这个:

array(2) { ["id"]=> string(1) "1" ["username"]=> string(6) "admin" }

为什么' id'一个字符串而不是整数?

3 个答案:

答案 0 :(得分:2)

“id”怎么可能不是整数?

如果要检查值:

<?php
function is_int_val($val) {
    return $val == (string)((int)$val);
}
echo (is_int_val(33) ? "true" : "false")."\n"; // returns true
echo (is_int_val("33") ? "true" : "false")."\n"; // returns true
echo (is_int_val("33.0") ? "true" : "false")."\n"; // returns true
echo (is_int_val("a33") ? "true" : "false")."\n"; // returns false
echo (is_int_val("33a") ? "true" : "false")."\n"; // returns false

答案 1 :(得分:0)

我猜你的变量类型是字符串。 在您的情况下,最好使用is_numeric()

如果您希望有一些浮动值,您也可以使用is_float()

if( is_numeric($data[0]['id']) && !is_float($data[0]['id']) ){
  print 1;
}else{
  print 0;
}

答案 2 :(得分:0)

如果字符串值为is_int(),则始终返回false。

is_int('23') = bool(false)

根据评论你有ID为字符串

array(2) { 
    ["id"]=> string(1) "1" 
    ["username"]=> string(6) "admin" 
}

所以它总是返回false

这样做:

if( is_array($data) && $data[0]['id'] > 0 ) {
    print 1;
} 
else print 0;