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