你好,我只是想知道PHP是否可以做到这一点,下面是场景。。。
我有一个CSV文件示例"first.CSV":
"Name","Age","Job"
"Peter Algarve","17","Mechanic"
"Will Smith","50","Actor"
然后我有了这个CSV"second.CSV":
"Origin","Eye Color","Birthday"
"Jamaica","Red","17-8-1967"
"USA","Brown","2-8-1969"
现在我想做的是将第二个CSV数据添加到第一个CSV的行末尾,如下所示:
"Name","Age","Job","Origin","Eye Color","Birthday"
"Peter Algarve","17","Mechanic","Jamaica","Red","17-8-1967"
"Will Smith","50","Actor","USA","Brown","2-8-1969"
请注意,我还需要添加一个逗号来分隔新列,有什么方法可以在PHP中做到这一点吗?
使用file()
将每个文件读取到阵列中
$first = file('firstFile.csv');
$second = file ('secondFile.csv');
遍历数组并构造一个新数组,将两行连接起来,用逗号分隔
以及使用CCD_ 2来消除我们在这一过程中可能遇到的任何换行符。
foreach ($first as $i=>$row){
$result[$i] = trim($row) . "," . trim($second[$i]);
}
将生成的数组写入新的csv文件
$fp = fopen('result.csv', 'w');
foreach ($result as $line) {
fputcsv($fp, $line);
}
fclose($fp);
执行print_r($result)
将输出
Array
(
[0] => "Name","Age","Job","Origin","Eye Color","Birthday"
[1] => "Peter Algarve","17","Mechanic","Jamaica","Red","17-8-1967"
[2] => "Will Smith","50","Actor","USA","Brown","2-8-1969"
)
如果你想创建合并输出的csv,不需要将所有数据读取到内存中,你只需要逐行读取、合并和写入即可:
$fileOneHandle = fopen('first.csv', 'r');
$fileTwoHandle = fopen('second.csv', 'r');
$fileMergedHandle = fopen('merged.csv', 'w');
while($fileOneLine = fgetcsv($fileOneHandle) && $fileTwoLine = fgetcsv($fileTwoHandle)){
fputcsv($fileMergedHandle, array_merge($fileOneLine, $fileTwoLine));
}
fclose($fileOneHandle);
fclose($fileTwoHandle);
fclose($fileMergedHandle);