首页 > 解决方案 > 使用一些记录创建文件集

问题描述

我正在尝试创建一组文件。每个文件有 100 条记录,如果超过 10 条记录将有 10 条记录,它将创建新文件。并将下一个数据存储在新文件中

创建文件,但所有数据都在 1 个文件中。

<?php
function wh_BATCH($Batch_msg,$count)
{
    $log_filename = "BATCH";
    if (!file_exists($log_filename)) 
    {
        // create directory/folder uploads.
        mkdir($log_filename, 0777, true);
    }

if($count == 5)
    {
        $log_file_data = $log_filename.'/BATCH_1.txt';
        file_put_contents($log_file_data, $Batch_msg . "\n", FILE_APPEND);       
    }
    else
    {
        $log_file_data = $log_filename.'/BATCH_' . date('d-M-Y') . '.txt';
        file_put_contents($log_file_data, $Batch_msg . "\n", FILE_APPEND);        
    }
}

for($i=0;$i<=100;$i++)
{
    wh_BATCH("hello world ".$i,5);    
}

?>

输出

将创建 10 个文件 BATCH_1.txt,********,BATCH_10.txt,其中 BATCH_1 将具有

BATCH_1.txt Hello world 1 to Hello world 10

BATCH_2.txt Hello world 11 to Hello world 20

BATCH_3.txt Hello world 21 to Hello world 30

* * *

BATCH_10.txt Hello world 91 to Hello world 100

请建议

文件输出

文件数据

已编辑

<?php 
 for($i=1;$i<=100;$i++)
 { 
  wh_BATCH("hello world ".$i, $i);    
  } 

  function wh_BATCH($Batch_msg,$count)
  {
  $log_filename = "BATCH";
  if (!file_exists($log_filename)) 
  {
      // create directory/folder uploads.
    mkdir($log_filename, 0777, true);
   }

  $number = (float)$count/10;
  $number++;

    $log_file_data = $log_filename.'/BATCH_'.$number.'.txt';
    file_put_contents($log_file_data, $Batch_msg . "\n", FILE_APPEND); 
}
?>

输出

上面的文件应该只有 10 个文件 每个文件应该有 10 条记录 BATCH_1.txt --- BATCH_10.txt

标签: php

解决方案


for($i=0;$i<=100;$i++)
{
    wh_BATCH("hello world ".$i,5);    
}

在此 FOR 中,您始终将 5 作为第二个参数传递。

if($count == 5)
{
    $log_file_data = $log_filename.'/BATCH_1.txt';
    file_put_contents($log_file_data, $Batch_msg . "\n", FILE_APPEND);       
}

这就是为什么 wh_BATCH() 函数的这一部分总是被执行的原因。此部分始终附加到 BATCH_1.txt

为了实现你的目标,你应该这样做

首先,将 i 的值传递给 wh_BATCH() 函数

for($i=0;$i<=100;$i++)
{
    wh_BATCH("hello world ".$i, $i);    
}

然后,在函数内部,你可以做这样的事情

$number = intVal($count/10);
$number++;
$log_file_data = $log_filename.'/BATCH_'.$number.'.txt';
file_put_contents($log_file_data, $Batch_msg . "\n", FILE_APPEND);

这将是功能

function wh_BATCH($Batch_msg,$count)
{
    $log_filename = "BATCH";
    if (!file_exists($log_filename)) 
    {
        // create directory/folder uploads.
        mkdir($log_filename, 0777, true);
    }

    $number = intVal($count/10);
    $number++;
    $log_file_data = $log_filename.'/BATCH_'.$number.'.txt';
    file_put_contents($log_file_data, $Batch_msg . "\n", FILE_APPEND);
}

在 PHP 5.6 上测试的工作代码

<?php
   function wh_BATCH($Batch_msg,$count)
   {
      $log_filename = "BATCH";
      if (!file_exists($log_filename)) 
      {
        // create directory/folder uploads.
        mkdir($log_filename, 0777, true);
      }

      $number = intVal($count/10);
      $number++;

      $log_file_data = $log_filename.'/BATCH_'.$number.'.txt';
      file_put_contents($log_file_data, $Batch_msg . "\n", FILE_APPEND); 
   }

   for($i=1;$i<=100;$i++)
   { 
     wh_BATCH("hello world ".$i, $i);    
   } 

推荐阅读