php 数据库 - is_int returns 始终为 false
php database - is_int returns false always
我写了一个简单的 sql 查询并且 is_int() returns 总是错误的。为什么?
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( is_int($data[0]['id'] ){
print 1;
}else{
print 0;
}
//编辑
var_dump 打印这个:
array(2) { ["id"]=> string(1) "1" ["username"]=> string(6) "admin" }
为什么 'id' 是字符串而不是整数?
我猜你的变量类型是字符串。
在你的情况下使用 is_numeric()
是个好主意
如果您希望有一些浮点值,您也可以使用 is_float():
if( is_numeric($data[0]['id']) && !is_float($data[0]['id']) ){
print 1;
}else{
print 0;
}
"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
在字符串值 is_int()
的情况下总是 return false。
is_int('23') = bool(false)
根据评论,您的 ID 为字符串
array(2) {
["id"]=> string(1) "1"
["username"]=> string(6) "admin"
}
所以它总是 return 错误
这样做:
if( is_array($data) && $data[0]['id'] > 0 ) {
print 1;
}
else print 0;
我写了一个简单的 sql 查询并且 is_int() returns 总是错误的。为什么?
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( is_int($data[0]['id'] ){
print 1;
}else{
print 0;
}
//编辑 var_dump 打印这个:
array(2) { ["id"]=> string(1) "1" ["username"]=> string(6) "admin" }
为什么 'id' 是字符串而不是整数?
我猜你的变量类型是字符串。 在你的情况下使用 is_numeric()
是个好主意如果您希望有一些浮点值,您也可以使用 is_float():
if( is_numeric($data[0]['id']) && !is_float($data[0]['id']) ){
print 1;
}else{
print 0;
}
"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
在字符串值 is_int()
的情况下总是 return false。
is_int('23') = bool(false)
根据评论,您的 ID 为字符串
array(2) {
["id"]=> string(1) "1"
["username"]=> string(6) "admin"
}
所以它总是 return 错误
这样做:
if( is_array($data) && $data[0]['id'] > 0 ) {
print 1;
}
else print 0;