使用PHP将txt文件分离为多个csv文件

使用PHP将txt文件分离为多个csv文件,php,csv,text-files,Php,Csv,Text Files,因此,我能够将txt文件解析为csv文件 $data = array(); while ($line= fgets ($fh)) { $stack = array($LAUS,$FIPS,$CountyName,$Date,$_CLF,$_EMP,$_UNEMP,$RATE); array_push($data, $stack); } $file = fopen('file.csv','w'); foreach ($data as $fields) { fputcsv($fil

因此,我能够将txt文件解析为csv文件

$data = array();
while ($line= fgets ($fh)) {
$stack = array($LAUS,$FIPS,$CountyName,$Date,$_CLF,$_EMP,$_UNEMP,$RATE);
        array_push($data, $stack);
}
$file = fopen('file.csv','w');

foreach ($data as $fields) {
fputcsv($file, $fields,',','"');
 }

fclose($file);

我的问题是,创建多个按月份分隔的csv文件(也包括年份,如Jan01.csv、Jan02.csv)的最佳方式是什么。

我想猜测一下日期的格式

while ($line = fgets ($fh)) {
    // Not sure where you're getting these values, but I'm assuming it's correct
    $stack = array($LAUS,$FIPS,$CountyName,$Date,$_CLF,$_EMP,$_UNEMP,$RATE);

    // Assuming $Date looks like this '2011-10-04 15:00:00'
    $filename = date('My', strtotime($Date)) . '.csv';
    $file = fopen($filename,'a+');
    fputcsv($file, $stack,',','"');
    fclose($file);
}
这会有点慢,因为您经常打开和关闭文件,但因为我不知道原始数据集的大小,所以我不想在写入结果之前耗尽所有缓存内存


请注意,多次运行此操作将导致重复数据插入CSV文件。在运行这段代码之前,您可能需要添加一些代码来删除/清除任何当前存在的CSV文件。

我不想听起来有点屈尊俯就,但我想“最好的方法”是这样做。你被什么困住了?月份数据来自哪里?我在你的代码里没有看到对不起,我想我的问题有点模糊。有没有办法创建包含变量的变量名?比如$data\uu$Jan01、$data\ujan02。这样,我可以检查哪个$month和$year将堆栈发送到正确的数据数组。从那里我知道如何输出到不同的csv文件。所以,没有定义的csv文件范围,所以如果不需要,我不想硬编码。感谢快速的回答,这很接近,但$stack是一行代码,它从我的原始代码推送到数据数组,然后数据推送到csv文件。如果不硬编码$dataJan01、$dataJan02,我如何将堆栈扔到适当的$data数组中。我意识到我可以运行代码,只需拉取适用于该月/年的$stack,但我希望有一种方法可以避免这种循环。也许你可以给我一个存储在
$stack
中的数据示例,我会更好地了解我必须处理的内容。等等,你说得对。我是php新手,没有看到“a+”。我没有意识到这意味着附加。谢谢你的帮助。我不认为这正是我的想法,但这似乎是一种方法。