我使用下面的php脚本从csv中删除一些列,对它们进行新排序,然后将其另存为新文件。它适用于我制作的文件。现在我需要对另一个csv执行同样的操作,但我不知道出了什么问题。我总是在第一列的数据前得到一个逗号。
这就是我所拥有的,但它并不是真的有效。
<?php
$input = 'http://***/original.csv';
$output = 'new.csv';
if (false !== ($ih = fopen($input, 'r'))) {
$oh = fopen($output, 'w');
while (false !== ($data = fgetcsv($ih))) {
// this is where you build your new row
$outputData = array($data[4], $data[0]);
fputcsv($oh, $outputData);
}
fclose($ih);
fclose($oh);
}original.csv如下所示:
subproduct_number barcode stock week_number qty_estimate productid variantid
05096470000 4024144513543 J 3 6 35016
ae214 848518017215 N 23 0 7 35015
05097280000 4024144513727 J 1 32 34990分隔符是';‘。在正在运行的文件中使用相同的分隔符
但在这里它会出错,因为我保存的new.csv看起来像这样:
subproduct_number barcode stock week_number qty_estimate productid variantid
,05096470000 4024144513543 J 3 6 35016
,ae214 848518017215 N 23 0 7 35015
,05097280000 4024144513727 J 1 32 34990但我需要的是一个新的csv,看起来像这样:
qty_estimate subproduct_number
3 05096470000
0 ae214
1 05097280000如您所见,我只需要5.Column ($data4)作为第一列,第一列($data)作为第二列。
我希望有人能给我指明正确的方向。谢谢
发布于 2017-12-06 19:02:03
您可以这样做:
while (false !== ($data = fgetcsv($ih))) {
$data = explode(';', $data[0]);
$outputData = array($data[4], $data[0]);
fputcsv($oh, $outputData, ';');
}https://stackoverflow.com/questions/47671926
复制相似问题