使用PHP合并csv文件

时间:2018-12-07 11:14:20

标签: php csv merge

我有一个.csv文件,可以与Google Maps API一起使用,以成功创建地图数据。

我想要做的是合并2个(或更多).csv文件,并以相同的方式在Google地图上显示TOTAL数据。它们都是相同的格式。

我有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 :(得分:0)

我假设两个文件都很小,所以一次加载它们就可以了。

代码将加载两个文件,然后从第二个文件中删除第一行。它还会从第一个文件中删除任何行尾,但会添加自己的行以确保始终有新行...

$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);