我有超过 7mb 的文件,其中包含我输入的数字和下面的数组:$allbarcodes = array(3117148100,3117148110,3117148120,3117148130,3118011010,3118011020,3118011060,3118011070,3118011080,3118011090,3118011100,3118011110,3118011120,3118011130,3118012010,3118012020,3118012060,3118012070,3118012080,3118012090,3118012100,3118012110,3118012120,3118012130,3118654010,3118654020,3118654060,3118654070,3118654080,3118654090,3118654100,3118654110,3118654120,3118654130,3118797010,3118797020,3118797060,3118797070,3118797080,3118797090,3118797100,3118797110,3118797120,3118797130,3118846010,3118846020,3118846060,3118846070,3118846080,3118846090,3118846100,3118846110,3118846120,3118846130,3119009010,3119009020,3119009060,3119009070,3119009080,3119009090,3119009100,3119009110,3119009120,3119009130,3119011010,3119011020,3119011060,3119011070,3119011080,3119011090,3119011100,3119011110,3119011120,3119011130,3119012010,3119012020,3119012060,3119012070);for($i = 1; $i < count($allbarcodes); $i++) { try { $sumOfnum = summation((int)$allbarcodes[$i]); $allbarcodes[$i] = str_pad($allbarcodes[$i],10,'0',STR_PAD_LEFT); array_push($barcodeList,$sumOfnum.",".$allbarcodes[$i]); } catch(Exception $e) { echo "n Exception Caught", $e->getMessage(); } }function summation( $n){ $m =0; $sum=0; while($n != 0) { $m = $n % 10; $sum = $sum + $m; $n = (int)$n/10; } return $sum;}我在一个文件中有大约 300,000 个数字,我需要对所有数字求和并创建一个总和值文件,并将该总和值的所有数字保存在 txt 文件中。我写了下面的语句来创建数组:array_push($barcodeList,$sumOfnum.",".(int)$allbarcodes[$i]);例如:如果数字是“2399879110”,它的总和是“49”,这个数字应该写在 49.txt 文件中。对于某些数字,此代码工作正常,但是当数字更多时,此代码无法正常工作,所有数字或各种总和值(如 23,35 或任何开始复制到 46.txt 文件中)。
1 回答
MM们
TA贡献1886条经验 获得超2个赞
在 64 位系统上,整数可以从 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807
在 32 位系统上,整数可以从 -2,147,483,648 到 2,147,483,647
您的数字似乎大于 32 位的最大值,但是,如果您从文件中读取它们,它们应该以字符串形式出现,因此不要将它们强制转换为(int). 此外,它更容易一些:
foreach($allbarcodes as $num) {
$result[] = array_sum(str_split($num));
}
演示在 64 位系统上的输出。
看起来你想要sum,number:
$result[] = array_sum(str_split($num)).",$num";
至于将数字保存在名为 sum 的文件中:
foreach($allbarcodes as $num) {
file_put_contents("/path/to/".array_sum(str_split($num).".txt", $num);
}
如果你想写入sum,number文件,那么当然:
$sum = array_sum(str_split($num);
file_put_contents("/path/to/$sum.txt", "$sum,$num");
- 1 回答
- 0 关注
- 153 浏览
添加回答
举报
0/150
提交
取消