将一百条记录写入文件
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
为空,则可以避免整个代码,否则将创建空文件。
我想在以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
为空,则可以避免整个代码,否则将创建空文件。