我想在以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);
}
答案 0 :(得分:0)
我相信您的行为正在发生,因为您在第一条记录后关闭了文件,并且直到到达第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
为空,则可以避免整个代码,否则将创建空文件。