Запись сотен записей в файлы - PullRequest
0 голосов
/ 19 октября 2018

Я хочу написать сотню записей непрерывно в разных файлах с именем 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);
}

1 Ответ

0 голосов
/ 19 октября 2018

Я считаю, что ваше поведение происходит, потому что вы закрываете файл после первой записи и никогда не открываете его снова, пока не получите 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 пусто, весь этот код можно избежать илибудет создан пустой файл.

...