使用php将多个嵌套数组写入文件

时间:2012-02-06 09:42:12

标签: php arrays csv multidimensional-array fgetcsv

我要做的是获取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()只会导致只写入数据的第一个条目。

有什么想法吗?

2 个答案:

答案 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);
?>