объединить CSV-файлы с помощью PHP - PullRequest
0 голосов
/ 07 декабря 2018

У меня есть файл .csv, который я могу использовать с API карт Google для успешного создания картографических данных.

Я собираюсь объединить 2 (или более) файла .csv и отобразить ИТОГОДанные на карте Google аналогичным образом.Все они в одном и том же формате.

У меня есть пути к 2 файлам csv и, если необходимо, пустой файл .csv в том же каталоге, где файлы могут быть объединены в ...

К сожалению, все файлы .csv имеют начальную «строку заголовка», которую было бы здорово пропустить при слиянии ...

Если кто-то может указать мне правильное направление, я был бы очень рад,Спасибо

редактировать: я пытался:

$data1 = file_get_contents('google_map_data.csv'); 
$data2 = file_get_contents('google_map_data2.csv'); 
$TOTALdata = "google_map_dataALL.csv";

function joinFiles(array $files, $result)
{
    if(!is_array($files)) {
        throw new Exception('`$files` must be an array');
    }

    $wH = fopen($result, "w+");

    foreach($files as $file)
    {
        $fh = fopen($file, "r");

        while(!feof($fh))
        {
            fwrite($wH, fgets($fh));
        }

        fclose($fh);
        unset($fh);

        fwrite($wH, "\n"); //usually last line doesn't have a newline
    }

    fclose($wH);
    unset($wH);

    joinFiles(array($data1, $data2), $TOTALdata);

1 Ответ

0 голосов
/ 07 декабря 2018

Я предполагаю, что оба файла маленькие, поэтому загрузка их всех за один раз должна быть в порядке.

Код загружает оба файла, а затем удаляет первую строку из второй.Он также удаляет любой конец строки из первого файла, но добавляет собственный, чтобы всегда иметь новую строку ...

$data1 = file_get_contents('google_map_data.csv'); 
$data2 = file_get_contents('google_map_data2.csv'); 
$TOTALdata = "google_map_dataALL.csv";
$data2 = ltrim(strstr($data2, PHP_EOL));
file_put_contents($TOTALdata, rtrim($data1).PHP_EOL.$data2);
...