【发布时间】:2016-04-18 16:01:13
【问题描述】:
我需要比较两个 csv 文件。我每天都会收到一个带有新产品的新产品,还有一个包含所有库存产品的新产品。 如果通过比较 sku 在两个文件中有相同的产品,我有工具。新产品的第一个 csv 可能有多次相同的 sku。因此,如果有匹配项,我需要将第二个 csv 中的 Prod.ID 添加到新列中第一个 csv 中的 sku 中。
这是第一个 csv 的样子:
ID SKU Cat Price
0 12345678 Clothes 10.00
0 12345678 Clothes 10.00
0 87654321 Bath 5.00
第二个文件是这样的
ID SKU Cat Price
321 12345678 Clothes 10.00
532 87654321 Bath 5.00
所以我需要将第二个 csv 中的 ID 添加到第一个 csv 中的每个匹配的 SKU 中,并将其保存到一个非常新的 csv 中,最终得到的 ist 如下所示:
ID SKU Cat Price
321 12345678 Clothes 10.00
321 12345678 Clothes 10.00
532 87654321 Bath 5.00
现在我有以下代码,但我只得到一个空的 updated.csv。我完全卡住了:(
$fp = fopen('updated.csv', 'w');
$csvFile1 = "firts-file.csv";
$handle1 = fopen($csvFile1, "r");
$csvFile2 = "second-file.csv";
$handle2 = fopen($csvFile2, "r");
while(($data1 = fgetcsv($handle, 20000, ";")) && ($data2 = fgetcsv($handle2, 20000, ";" ))) {
$oldID = $data1[0];
$newID = $data2[0];
if(($data1[1]) == ($data2[1])) {
fputs($fp, str_replace($oldID, $newID, "\n"));
}
}
【问题讨论】:
-
你描述你的 2 个输入文件的方式,它们不是 .csv 文件所以因为我们不明白你实际上在问这个问题而你的其他问题不是得到答复。 C 代表逗号 S 代表分隔 V 代表变量 您的文件描述包含 NOT COMMAS
-
如果您可以再次尝试正确描述输入和您想要做什么以及输出的格式,您实际上可能会让某人尝试回答
-
输入为 csv。如果我在 OOo 或 Excel 中打开它们,我会得到如上所述的 Coulumns。我需要检查这两个文件是否有相同的 SKU,如果有,则将文件 1 中的 ID '0' 替换为每次匹配时文件中的 ID,并将更改的数据保存到新的 csv 中。