Безопасно ли использовать переменные типа INT в функциях BCMath в PHP?
Пример:
<?php
$a = 1;
$b = "1";
echo bcadd($a,$b,0);
?>
Кажется, это работает, но безопасно ли это делать? Или есть, например, риск того, что PHP может интерпретировать INT как нечто иное, чем его значение int (я думаю о шестнадцатеричных значениях и т. Д.)?
Спасибо !
Будьте осторожны с очень большими числами. Если вы назначите буквенное целое число> PHP_INT_MAX
к переменной, PHP автоматически конвертирует его в число с плавающей точкой. Я знаю, что вы специально спрашивали о целых числах, и в этом случае вы бы передавали число с плавающей точкой, но если вы не знаете, что такое автоматическое преобразование похоже вы используете большой int, поэтому я подумал, что стоит упомянуть.
$a = 9223372036854775808;
$b = '1';
var_dump($b); // float 9.2233720368548E+18
echo bcadd($a, $b, 0); // echoes 1
По сути, функция принимает строку. Если вы дадите ему что-то, что не является строкой, PHP автоматически преобразует ее в строку, если это возможно, если вы не включили строгий режим.
Других решений пока нет …