我有以下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执行此操作?
答案 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
。