在PHP中增加大于2147483647的值

时间:2014-06-01 08:57:21

标签: php increment

基本上我在一个特定模块中的卡管理系统上工作,该模块的任务是创建顺序的大容量卡。这些卡长19位,因为这些卡具有货币价值,我需要存储整个卡值。奇怪的是,系统在管理VISA卡号码递增方面没有任何问题,并且这些长度为16位。我假设最后3位数字正在破坏这个功能,但我不知道地球上如何处理这个问题,因为我以前从来没有处理过如此大的数值。

$seqArray = array();
for($i = $_POST['startcardnumber']; $i <= $_POST['endcardnumber']; $i++) {
    $i = sprintf('%0.0f',$i);
    if(strlen($i) < $count) { $i = str_pad($i, $count, '0', STR_PAD_LEFT); }
    array_push($seqArray, $i);
}

非常感谢任何帮助。

感谢Fluffeh,我发现BC Math函数正是我所需要的。下面是我用来计算和增加卡号的新for循环。

$seqArray = array();
for($s = $_POST['startcardnumber'], $e = $_POST['endcardnumber'];bccomp($s,$e) != 1; $s = bcadd($s, 1)) {
    if(strlen($s) < $count) { $s = str_pad($s, $count, '0', STR_PAD_LEFT); }
    array_push($seqArray, $s);
}

1 个答案:

答案 0 :(得分:2)

使用BC Math库可能有点繁琐,但它可以轻松处理您需要的值中的数字。

缺点是您不能按预期使用简单的操作符:

例如,addition如下所示 - 使用bcadd()函数:

<?php

$a = '1.234';
$b = '5';

echo bcadd($a, $b);     // 6
echo bcadd($a, $b, 4);  // 6.2340

?>