2011-02-06 49 views
4

我这样做是为了检查和已经使用的种类数的变量在PHP中:可以乘以一个变量来检查它是否真的是一个数字在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; 
} 

感谢,

+4

答:没有。使用内置函数。 – NotMe 2011-02-06 04:38:05

+0

虽然下面的每个人都说得对,但有一种恰当的方式可以做到这一点..有可能让每个人都对我产生愤怒......有时候,对于那些并不重要的小项目来说,编写$ myvar = 0 + $ myvar; (略有不同的表述,但相同的想法) – Ben 2011-02-06 04:50:53

回答

13

不,这不是一个好办法,这里的原因:

$ 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 

这些都是SL根据您想要检查的内容而异。参考文献:

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

3

有什么错is_int()\ is_numeric()来\ ctype_digit()?

2

嗯为什么你没有做适当的检查?

像:

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

相关问题