测试变量是否是PHP中的数字的正确方法是什么?

时间:2011-12-07 03:06:18

标签: php integer

当我从数据库中获取数据时,即使它具有数字值,结果也是字符串。这就是我的意思:

// An integer
$int=10;
if(is_int($int)) // Returns true
...

// A string
$int='10';
if(is_int($int)) // Returns false
...

我希望这两个都返回true。

6 个答案:

答案 0 :(得分:5)

如果您希望它接受浮点值,请使用is_numeric(),仅使用ctype_digit()作为整数。

答案 1 :(得分:2)

您正在寻找is_numeric()。

http://php.net/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)

将变量转换为您想要的类型。

允许演员阵容:

  • (int),(integer) - 强制转换为整数
  • (bool),(boolean) - cast to boolean
  • (float),(double),(real) - cast to float
  • (string) - cast to string
  • (数组) - 强制转换为数组
  • (object) - 强制转换为对象
  • (未设置) - 强制转换为NULL(PHP 5)

<强>代码:

<?

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(',','.',''));
}