是否可以乘以一个变量来检查它是否真的是PHP中的数字?

时间:2011-02-06 04:32:35

标签: php variables numbers integer

我这样做是为了检查并已经在php中使用了数字类型的变量:

$myvar = $myvar * 1;

有了这个,我有一个数字或者如果$ myvar有任何其他特征,结果是0

我想知道这可能会在某种程度上给我带来麻烦。

为了防止缘故,我正在使用一个能够使用上面代码的函数,所以我可以根据需要更改它。例如:

$myvar = IntOrZero($myvar);

所以我的问题是,这是一个检查和使用数字变量的好方法吗?

编辑:
使用* 1,我确信它会返回一个类型编号的变量 见:

$var = "350";
$num = 120;
// builtin
if (is_numeric($var))
  echo($var - $num);

// multiplying
$var *= 1;
echo($var - $num);

虽然我不确定内置方法是否会回应我想要的东西,但我确信乘法将会增加 我有点不在乎$ var是否为数字,如果不是,我不会向用户显示任何消息,如果不是数字,我将使用0值。根据答案,这会是一个好方法吗?

function IntOrZero($var){
   return is_numeric($var) ? intval($var) : 0;
}

感谢,

3 个答案:

答案 0 :(得分:14)

不,这不是一个好方法,这就是原因:

$ php -r 'echo array() * 1;'
Fatal error: Unsupported operand types in Command line code on line 1

要确保变量是数字,cast it

$integer = (int)$integer;
$float = (float)$float;

检查是否为数字:

is_numeric($var)    // number or string containing any valid numeric expression
ctype_digit($var)   // string containing only digits
is_int($var)        // is of type int
is_float($var)      // is of type float

这些都略有不同,具体取决于您要检查的具体内容。请参阅文档:

http://php.net/is_numeric
http://php.net/manual/en/function.ctype-digit.php
http://php.net/is_int
http://php.net/is_float

答案 1 :(得分:3)

is_int()\ is_numeric()\ ctype_digit()??

有什么问题

答案 2 :(得分:2)

你为什么不做正确的检查?

喜欢:

我强烈建议您使用正确的方法检查您的价值。