PHP: BCMath 接受整数吗?
PHP: Does BCMath accept integers?
在 PHP 中的 BCMath 函数中使用 INT 类型变量是否安全?
示例:
<?php
$a = 1;
$b = "1";
echo bcadd($a,$b,0);
?>
这似乎可行,但这样做安全吗?或者是否存在 PHP 可以将 INT 解释为 int 值以外的其他东西的风险(我正在考虑十六进制值等)?
谢谢!
非常大的数字要小心。如果将文字整数 > PHP_INT_MAX
分配给变量 PHP will automatically convert it to a float。我知道您特别询问了整数,在那种情况下您将传递一个浮点数,但如果您不知道自动转换,它 看起来像 您正在使用大整数,所以我认为值得一提。
$a = 9223372036854775808;
$b = '1';
var_dump($b); // float 9.2233720368548E+18
echo bcadd($a, $b, 0); // echoes 1
基本上,该函数确实接受一个字符串。如果你给它一些不是字符串的东西,PHP 会自动将它转换为字符串,除非你启用了 strict mode.
在 PHP 中的 BCMath 函数中使用 INT 类型变量是否安全?
示例:
<?php
$a = 1;
$b = "1";
echo bcadd($a,$b,0);
?>
这似乎可行,但这样做安全吗?或者是否存在 PHP 可以将 INT 解释为 int 值以外的其他东西的风险(我正在考虑十六进制值等)?
谢谢!
非常大的数字要小心。如果将文字整数 > PHP_INT_MAX
分配给变量 PHP will automatically convert it to a float。我知道您特别询问了整数,在那种情况下您将传递一个浮点数,但如果您不知道自动转换,它 看起来像 您正在使用大整数,所以我认为值得一提。
$a = 9223372036854775808;
$b = '1';
var_dump($b); // float 9.2233720368548E+18
echo bcadd($a, $b, 0); // echoes 1
基本上,该函数确实接受一个字符串。如果你给它一些不是字符串的东西,PHP 会自动将它转换为字符串,除非你启用了 strict mode.