我的文件超过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文件中的值。
答案 0 :(得分:1)
在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));
}
Demo,其输出在64位系统上。
看起来像您想要的sum,number
:
$result[] = array_sum(str_split($num)).",$num";
关于将数字保存在名为和的文件中:
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");