我正在玩 Twitter API。有些数字(例如 Twitter ID)非常大,例如 199693823725682700。
我已经将此数字作为字符串格式,现在我需要将其更改为正常可读的数字,而不是像 1000xE09,因为我需要从该字符串转换的数字中减去 -1。然后,我还需要将数字作为字符串发送。
总之,在PHP中,如何将字符串更改为数字,例如“199693823725682700”为另一个字符串“199693823725682699”(原始数字-1)?
非常感谢!
如果 BCMath 不可用(如果可用,这将是更好的选择)此函数将递减存储为字符串的任意大小的整数。没有处理浮点数或科学记数法的插值,它只适用于带有可选符号的十进制数字字符串。
function decrement_string ($str) {
// 1 and 0 are special cases with this method
if ($str == 1 || $str == 0) return (string) ($str - 1);
// Determine if number is negative
$negative = $str[0] == '-';
// Strip sign and leading zeros
$str = ltrim($str, '0-+');
// Loop characters backwards
for ($i = strlen($str) - 1; $i >= 0; $i--) {
if ($negative) { // Handle negative numbers
if ($str[$i] < 9) {
$str[$i] = $str[$i] + 1;
break;
} else {
$str[$i] = 0;
}
} else { // Handle positive numbers
if ($str[$i]) {
$str[$i] = $str[$i] - 1;
break;
} else {
$str[$i] = 9;
}
}
}
return ($negative ? '-' : '').ltrim($str, '0');
}
当然。
显然,目前在 php 中处理大整数的唯一方法是使用bcmath
扩展。在 PHP6 中规划了 64 位整数。
你应该用 PHP 试试 GMP,
这是手册。