我要做的是获取Business Catalyst生成的产品CSV。但它总是包含许多我不需要的东西。
我有一个使用fgetcsv()的脚本。代码是
<?php
$file_handle = fopen("ProductExport2.csv", "r");
while (!feof($file_handle) ) {
$line_of_text = fgetcsv($file_handle, 1000000);
$tableDisplay = "<tr><td>" . $line_of_text[0] . "</td><td>" . $line_of_text[1] . "</td><td>" . $line_of_text[2] . "</td><td>" . $line_of_text[4] . "</td><td>" . $line_of_text[6] . "</td><td>" . $line_of_text[49] . "</td></tr>";
echo $tableDisplay;
}
fclose($file_handle);
?>
这一切都是显示我想要的数据。
但是,我现在要做的是写一个新的CSV文件。使用fwrite()只会导致只写入数据的第一个条目。
有什么想法吗?
答案 0 :(得分:0)
像这样。
<?php
$file_handle = fopen("ProductExport2.csv", "r");
$data = '';
while (!feof($file_handle) ) {
$line_of_text = fgetcsv($file_handle, 1000000);
$data .= $line_of_text[0] . "," . $line_of_text[1] . "," . $line_of_text[2] . "," . $line_of_text[4] . "," . $line_of_text[6] . "," . $line_of_text[49] . "\n\r";
}
fclose($file_handle);
$new_file_handle = fopen("ProductExport2_reduced.csv", "w");
fwrite($new_file_handle, $data);
?>
答案 1 :(得分:0)
它与您已有的代码非常相似:
<?php
$file_handle = fopen("ProductExport2.csv", "w");
// Iterate through the data entries
foreach($my_data as $entry) {
// Write the "columns" of each entry as a comma-separated string to the file
fputcsv($file_handle, $entry);
}
fclose($file_handle);
$my_data
必须是二维数组。
如果您想要读取现有文件,处理其内容并将其写入其他文件,请执行以下操作:
<?php
$file_handle = fopen("ProductExport2.csv", "r");
$file_handle_output = fopen("ProductExport2_new.csv", "w");
while (!feof($file_handle) ) {
$line_of_text = fgetcsv($file_handle, 1000000);
// Change $line_of_text elements here
// for example $line_of_text[1] += 100;
// ...
fputcsv($file_handle_output, $line_of_text);
}
fclose($file_handle);
fclose($file_handle_output);
?>