当我从数据库中获取数据时,即使它具有数字值,结果也是字符串。这就是我的意思:
// An integer
$int=10;
if(is_int($int)) // Returns true
...
// A string
$int='10';
if(is_int($int)) // Returns false
...
我希望这两个都返回true。
答案 0 :(得分:5)
如果您希望它接受浮点值,请使用is_numeric()
,仅使用ctype_digit()
作为整数。
答案 1 :(得分:2)
您正在寻找is_numeric()。
答案 2 :(得分:1)
您不能用引号(单引号或双引号)括起变量,
引号括起来的任何内容都将被视为字符串
请参阅: - http://php.net/manual/en/language.types.string.php
数据库返回的一切(假设是mysql)总是STRING,
对于你的情况,它将是一个数字字符串
函数is_numeric(就像其他人提到的那样)是正确的方法
is_numeric - 查找变量是数字还是数字字符串
答案 3 :(得分:0)
我很少hack-ish,但可能是一种更有力的方法来检查值是否“匹配整数模式”。我的意思是它可能/可能不会明确地转换为整数,但它具有一个整数。
function isInt($i){
return (is_numeric($i) // number, but not necessarily an integer
&& (int)$i == $i); // when cast it's still the same "number"
}
Example(尝试自己的输入,看看它是如何站立的)
答案 4 :(得分:0)
将变量转换为您想要的类型。
允许演员阵容:
<强>代码:强>
<?
header( 'content-type: text/plain' );
$var = '10.1';
var_dump( (int)$var );
var_dump( (bool)$var );
var_dump( (float)$var );
var_dump( (string)$var );
var_dump( (array)$var );
var_dump( (object)$var );
var_dump( (unset)$var );
输出
int(10)
bool(true)
float(10.1)
string(4) "10.1"
array(1) {
[0]=>
string(4) "10.1"
}
object(stdClass)#1 (1) {
["scalar"]=>
string(4) "10.1"
}
NULL
答案 5 :(得分:0)
function is_number($s){
return in_array(str_replace(str_split('0123456789'), '', $s), array(',','.',''));
}