如何求和数组值并保存在列表中

我有超过 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 文件中)。


哆啦的时光机
浏览 154回答 1
1回答

MM们

在 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) {&nbsp; &nbsp; $result[] = array_sum(str_split($num));}演示在 64 位系统上的输出。看起来你想要sum,number:$result[] = array_sum(str_split($num)).",$num";至于将数字保存在名为 sum 的文件中:foreach($allbarcodes as $num) {&nbsp; &nbsp; 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");
打开App,查看更多内容
随时随地看视频慕课网APP