将一百条记录写入文件

Writing a hundred records to files

我想在以time()命名的不同文件中连续写入一百条记录。

此代码运行良好,但只向每个文件写入 1 条记录。我该怎么做?

$i=0;
$file= time();
foreach ($dizi as $fields) {
    $i++;
    if($i%100==0){
        $fp = fopen($file.'.csv', 'w');
    }
    fputcsv($fp, $fields,';','"');
    fclose($fp);
}

我相信你的行为正在发生,因为你在第一条记录后关闭了文件,并且在到达第 100 条记录之前再也没有打开它。

我认为更好的方法是打开循环外的第一个文件,如果达到 100 条记录,则关闭并打开新文件。

尝试这样的事情:

$i = 0;
$fp = fopen(time(). '.csv', 'w');
foreach($dizi as $fields) {
    $i++;
    if ($i % 100 == 0) {
        fclose($fp);
        $fp = fopen(time(). '.csv', 'w');
    }
    fputcsv($fp, $fields,';','"');
}
fclose($fp);

请注意,如果 $dizi 为空,则可以避免整个代码,否则将创建空文件。