基本上我在一个特定模块中的卡管理系统上工作,该模块的任务是创建顺序的大容量卡。这些卡长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);
}