修改一个目录中的所有CSV文件并将修改后的CSV文件保存在PHP中的其他目录中

时间:2019-04-16 14:31:58

标签: php csv

我想从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

0 个答案:

没有答案