Я собираюсь упростить это до SSCCE , чтобы его было легко понять и воспроизвести.
Я думаю, что вы слишком усложняете решение, которое, вероятно, и является причиной У тебя так много странных ошибок. Решение на самом деле довольно простое. Все, что вам нужно сделать, это взять каждый CSV-файл, разобрать его в строки и столбцы, а затем объединить каждую из этих строк в одну строку, чтобы записать его обратно в другой CSV.
Это самый простой способ сделать это:
$file0 = <<<'FILE0'
Manufacturer ID,image,description
SKU231,image1.jpg,A box.
SKUAG1,image22.jpg,Another box.
SKU21D,image7a.png,A third box.
FILE0;
$file1 = <<<'FILE1'
mpn,length,height,width,title
SKU231,22,14,10,Box 1
SKUAG1,12,6,6,Box 2
SKU21D,5,8,5,Box 3
FILE1;
$csv1 = array_map('str_getcsv', explode("\n", $file0));
$csv2 = array_map('str_getcsv', explode("\n", $file1));
$fd = fopen("/tmp/test.csv", 'w');
foreach ($csv1 as $row => $columns) {
$newRow = array_merge($columns, $csv2[$row]);
fputcsv($fd, $newRow);
}
$fd = fopen("/tmp/test.csv", "r");
while (($line = fgets($fd)) !== false) {
echo $line;
}
Результат:
"Manufacturer ID",image,description,mpn,length,height,width,title
SKU231,image1.jpg,"A box.",SKU231,22,14,10,"Box 1"
SKUAG1,image22.jpg,"Another box.",SKUAG1,12,6,6,"Box 2"
SKU21D,image7a.png,"A third box.",SKU21D,5,8,5,"Box 3"
|Manufacturer ID | image | description | mpn | length | height | width | title |
|----------------|-------------|--------------|--------|--------|--------|-------|-------|
| SKU231 | image1.jpg | A box. | SKU231 | 22 | 14 | 10 | Box 1 |
| SKUAG1 | image22.jpg | Another box. | SKUAG1 | 12 | 6 | 6 | Box 2 |
| SKU21D | image7a.png | A third box. | SKU21D | 5 | 8 | 5 | Box 3 |