我编写了一个简单的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'一个字符串而不是整数?
答案 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;