PHP输出为CSV

时间:2011-03-14 15:15:28

标签: php csv

我有以下PHP脚本,它从两个CSV文件中读取,目前我将数据放入表中,但我需要将其输出到CSV文件...

<?php

$products_file = fopen('Products.csv', 'r');
$manufacturers_file = fopen('Manufacturers.csv', 'r');

$manufacturers = array();

while (($manufacturers_line = fgetcsv($manufacturers_file)) !== FALSE) {

     $manufacturers[$manufacturers_line[0]] = $manufacturers_line [1];

    }

echo '<table><tr><th>SKU</th><th>Make and Model</th><th>Make and Model</th></tr>';

while (($products_line = fgetcsv($products_file)) !== FALSE ) {

  echo '<tr><td>'.$products_line[3].'</td><td>';

  echo $manufacturers[$products_line[5]];

  echo '</td><td>'.$products_line[4].'</td></tr>';
}

echo '</table>';

fclose($products_file);
fclose($manufacturers_file);

?>

如何使用fputcsv执行此操作?

3 个答案:

答案 0 :(得分:3)

看起来你只需要更改它呈现html表的位置,将其写入csv文件,如PHP文档所示: -

$fp = fopen('newfile.csv', 'w');

while (($products_line = fgetcsv($products_file)) !== FALSE )
{
  fputcsv($fp, $products_line);
}

fclose($fp);

希望有所帮助。

瑞克。

答案 1 :(得分:3)

你也可以这样做:

在while循环之外声明$ csv:

$csv = '';

然后在你的while循环中填充变量:

$csv .= $products_line[3].','.$manufacturers[$products_line[5]].','.$products_line[4]."\n";

然后,在循环外部,您可以将$ csv写入文件:

$myFile = 'testFile.csv';
$fh = fopen($myFile, 'w') or die('cannot open file');
fwrite($fh, $csv);
fclose($fh);

完成!

注意围绕\ n的双引号。如果使用单引号,则\ n字符将不具有预期结果。

答案 2 :(得分:2)

我建议:

$outfile = fopen('output.csv', 'w');

while (($products_line = fgetcsv($products_file)) !== FALSE 
      && fputcsv(
        array($products_line[3], $manufacturers[$products_line[5]], $products_line[4]
      ) !== FALSE) {
  echo '<tr><td>'.$products_line[3].'</td><td>';
  echo $manufacturers[$products_line[5]];
  echo '</td><td>'.$products_line[4].'</td></tr>';
}

首先,用
创建一个新数组 array($products_line[3], $manufacturers[$products_line[5]], $products_line[4]
然后这个数组被送到fputcsv()

以上代码同时输出csv和html。如果您不想输出html,请删除echo