【发布时间】:2011-06-22 03:32:43
【问题描述】:
我这样做是为了检查并已经在 php 中使用了 number 类型的变量:
$myvar = $myvar * 1;
有了这个,我有一个数字,或者如果 $myvar 有任何其他字符,结果是 0
我想知道这是否会在将来给我带来麻烦。
为了防止起见,我使用了一个包含上述代码的函数,因此我可以在需要时对其进行更改。例如:
$myvar = IntOrZero($myvar);
所以我的问题是这是否是检查和使用数字变量的好方法?
编辑:
使用 * 1,我确信它会返回一个 number 类型的变量。
见:
$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;
}
谢谢,
乔
【问题讨论】:
-
回答:没有。使用内置函数。
-
尽管下面的每个人都说有正确的方法可以做到这一点.. 冒着让每个人都对我生气的风险.. 有时,对于无关紧要的小项目,这只是很容易写 $myvar = 0 + $myvar; (表述略有不同,但思路相同)
-
@Jonathan
is_numeric($var) ? intval($var) : 0等价于intval($var),也就是等价于(int)$var。无需特殊功能。 -
@deceze:奇怪的是,对我来说, (int)$var 有点 osbcure,我的意思是,看着它我不确定它是否会尝试将字符串转换为 int 或将其解析为一个它,看到了吗?
-
@Jonathan 没有区别。它会将anything 变成
int。如果字符串在任何有效表达式中包含数字,它们将被“解析”为int。这些动态类型转换规则是 PHP 的核心,您应该真正习惯它们。 php.net/manual/en/…
标签: php variables numbers integer