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

发布于 2024-10-16 05:26:36 字数 741 浏览 5 评论 0原文

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

$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;
}

谢谢,

I am doing this to check and already use the variable of type number in php:

$myvar = $myvar * 1;

with this, I have a number or if $myvar has any other caracter, the result is 0

I wonder if this can somehow trouble me in the future.

for preventing sake, I am using a function that englobes that above code so I can change it if needed. Eg:

$myvar = IntOrZero($myvar);

so my question if this is a goodway to check and use the number variable?

EDIT:
Using a * 1, I am sure that it will return me a variable of type number.
See:

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

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

While I am not sure if the builtin method would echo what I want, I am sure that the multiplying will.
I kinda don't care if the $var is a number or not, I won't show any message to the user if it is not, I will work with the 0 value if it is not a number. Based on answers, would this be a good way?

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

thanks,
Joe

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

恍梦境° 2024-10-23 05:26:36

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

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

要确保变量是数字,强制转换

$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

No, it's not a good way, and here's why:

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

To make sure a variable is a number, cast it:

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

To check whether it's a number or not:

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

These are all slightly different, depending on what exactly you want to check for. Refer to the documentation:

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

§普罗旺斯的薰衣草 2024-10-23 05:26:36

is_int() \ is_numeric() \ ctype_digit() 有什么问题?

what's wrong with is_int() \ is_numeric() \ ctype_digit() ??

|煩躁 2024-10-23 05:26:36

嗯,你为什么不做适当的检查?

例如:

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

Umm why are you not doing a proper check?

Like:

I would strongly suggest you use a proper way of checking your value.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文