如何解决空白输出? PHP脚本

时间:2019-11-08 09:35:04

标签: php arrays input output

解决了该问题: 我要做的就是向fgetcsv添加分隔符 while (false !== ($data = fgetcsv($ih,10000,';')))

我们从供应商处收到文件。该文件有6万行,我们需要以某种方式自动过滤该文件。

csv文件包含3列:SKU,类别,价格。 我已经使用excel过滤了此文件,并且看到该文件仅需要700种产品。它们都具有相同的“注射器”类别

我已经写了一个php脚本,但是它给了我空白的输出。有人可以解释我的代码有什么问题吗?

<?php header('Content-type: text/plain; charset=utf-8'); 
$input = 'C:\Users\Administrator\Desktop\Data.csv';
$output = 'C:\Users\Administrator\Desktop\Data_changed.csv';
$myfile = fopen("C:\Users\Administrator\Desktop\data_log.txt", "w") or die("Something wrong with this file.");
$vname='The process was successful: '.date('Y-m-d').' day';
fwrite($myfile, $vname);
fclose($myfile);
$injector = "Injector";
if (false !== ($ih = fopen($input, 'r'))) {
    $oh = fopen($output, 'w');

    while (false !== ($data = fgetcsv($ih))) {

if (strpos($data[1], $injector) !== false) {

        // this is where you build your new row
        $outputData = array($data[0], $data[1], $data[2]);
        fputcsv($oh, $outputData);


    }
    }

    fclose($ih);
    fclose($oh);
}
?>

预期输出为700种经过过滤的产品。

csv文件的外观如下:

Sample data example

基本上,我想要做的是一个脚本,该脚本查找第二列中包含文本“ Injector”的所有行。

还要提及:原始文件带有分号作为分隔符。 Windows的默认分隔符是逗号。

1 个答案:

答案 0 :(得分:0)

如果在Excel中打开文件,请确保.csv(如果用逗号分隔而不是用分号分隔)。

编辑:您可以通过在文本编辑器(例如notepad / notepad ++)中打开文件来进行检查。