【发布时间】:2011-12-07 03:06:17
【问题描述】:
当我从数据库中获取数据时,结果是一个字符串,即使它有一个数值。这就是我的意思:
// An integer
$int=10;
if(is_int($int)) // Returns true
...
// A string
$int='10';
if(is_int($int)) // Returns false
...
我希望这两个都返回 true。
【问题讨论】:
当我从数据库中获取数据时,结果是一个字符串,即使它有一个数值。这就是我的意思:
// An integer
$int=10;
if(is_int($int)) // Returns true
...
// A string
$int='10';
if(is_int($int)) // Returns false
...
我希望这两个都返回 true。
【问题讨论】:
如果您希望它接受浮点值,请使用 is_numeric(),而仅对于整数使用 ctype_digit()。
【讨论】:
is_int 测试整数,ctype_digit 检查字符串是否只包含数字。
您正在寻找 is_numeric()。
【讨论】:
您不能用引号(单引号或双引号)将变量括起来,
用引号括起来的任何东西都将被视为字符串
见:- http://php.net/manual/en/language.types.string.php
数据库返回的所有内容(假设是 mysql)总是 STRING,
对于您的情况,它将是一个数字字符串
函数 is_numeric(就像其他人提到的那样)是正确的方法
is_numeric — 判断变量是数字还是数字字符串
【讨论】:
我有点 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(试试你自己的输入,看看效果如何)
【讨论】:
将变量转换为所需的类型。
允许的演员表是:
代码:
<?
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
【讨论】:
function is_number($s){
return in_array(str_replace(str_split('0123456789'), '', $s), array(',','.',''));
}
【讨论】: