我想从csvinput
目录中获取每个.CSV文件,对其进行格式化和修改并保存在csvoutput
目录中,然后从输入文件夹中删除已处理的文件。问题是,当输入文件夹中只有一个文件时,输出.CSV文件是预期的,但是当存在两个或更多文件时,仅第一个输出.CSV文件会按预期的格式进行格式化,而其他文件中还有一些不需要的数据,其他行填充。
我正在运行foreach
循环以刺激并处理.csv文件。这是我完整的代码。
<?php
$inputfiles = glob("csvinput/*.csv");
$skip = true;
foreach($inputfiles as $inputfile) {
if (($input = fopen($inputfile, "r")) !== false) {
if (($output = fopen('csvoutput/OUTPUT_'.basename($inputfile), 'w')) !== false) {
$headers = array("Product Code", "Ship Direct Flag", "Delivery Flash", "WEB Price", "WP Promo Price", "GS Promo Price", "Stock Level", "Stock Promise Date", "DROPPEDLINE");
fputcsv($output, $headers);
while(($data = fgetcsv($input))) {
if ($skip) { $skip = false; continue; }
if (array_filter($data)) {
$available_for_sales = $data[0];
$code = $data[1];
$buying_price = $data[7];
$stock_level = $data[13];
$data[0] = 'DS-'.$code;
$data[1] = 'STOCKED';
$data[2] = '';
$data[3] = $buying_price;
$data[4] = $buying_price;
$data[5] = $buying_price;
$data[6] = $stock_level;
$data[7] = date("Y-m-d",strtotime("tomorrow"));
$data[8] = strtr($available_for_sales,array("1" => "N","0" => "Y"));
}
fputcsv($output, array_slice($data, 0, 9));
}
fclose( $input );
fclose( $output );
unlink($inputfile);
echo 'Successfully processed <b>' .basename($inputfile). '</b><br>';
} else {
echo "Could not create file: OUTPUT_".basename($inputfile);
}
} else {
echo "Could not open file: " .basename($inputfile);
}
}
?>
我的输入文件如下所示: input
预期的输出文件应如下所示: output
但是,如果有多个输入文件,那么除第一个文件外的所有其他输出文件如下所示: uglyoutput